KM6.1: sama teenuse korduvkasutus

Mustri tüüp: töötlemise muster
Peamine kasusaaja:
automatiseeritud süsteem
Eesmärk
: teenuste kasutus
Allikas
: logikaeve
Teenuste arv:
1

Abstract

KM6.1: Self-loop means that the same service is consumed multiple times sequentially. This can happen for example in case of patterns "PM4: Protocol tunnelling" and "FM1: Universal pull service". However this pattern focuses on using retries when consuming unreliable services.

Sissejuhatus

Sama teenuse korduvkasutus on mõnes mõttes sarnane mustriga "KM6: teenuste tsükliline kasutus". Erinevuseks on, et tsükkel koosneb ühest teenusest. Käesolevas mustris keskendume konkreetse teenuse korduvkasutusele selle teenuse madala käideldavuse tõttu.

Probleem

Talitusprotsess sõltub mingist teenusest, mille korral on teada, et antud teenus on madala käideldavusega. Sellest tulenevalt tuleb lahendada süsteemi käitumine teenuse tarbimise ebaõnnestumise korral. Üheks võimalikuks lahenduseks on talitusprotsessi enda ümber disainimine selliselt, et antud teenusest sõltuvus väheneb. Teine võimalus, millele käesolev muster keskendub, on püüda lahendada probleemi korduskatsetega.

Lahendus

Madala käideldavusega teenuse tarbimise ebaõnnestumisel üritatakse teenust uuesti tarbida. Tegu on tsüklilise järjestkasutusega, kus on määratud maksimaalne iteratsioonide (korduskatsete) arv.

Mustri käitumine

Mustri käitumine on üldjuhul väga lihtne. Vastavalt teenuse tarbimise tulemusele otsustatakse, kas teenust tuleks uuesti tarbida. Lisaks määratakse korduskatsetele maksimaalne arv.

Lisakaalutlused

Ka käesoleva mustri korral tuleb arvestada olukorraga, et korduskatsete arv saab täis ja teenuse tarbimine ei õnnestu. Üldiselt tuleks selline olukord logida ja pakkuda kasutajale võimalus tegevuse tulevikus kordamiseks.

Mõningatel juhtudel tuleks kaaluda exponential backoff algoritmi rakendamist. See on soovituslik näiteks DHX protokolli kirjelduses.

Näide

Näitena on toodud Rahvastikuregistri teenuse RR75_v1 kasutus. Tegemist on teenusega, mida kasutatakse sageli korduvalt, enne talitusprotsessis järgnevate tegevustega jätkamist.

Nooltel toodud numbrid tulenevad mustri leidmiseks kasutatud töövoost (vt "Mustrite logidest tuvastamine") näitavad teenuste väljakutsete vahelist aega.


Joonis 5.7 Teenuse RR75_v1 tarbimine.



Viimati muudetud: esmaspäev, 24. oktoober 2016, 13.35