You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Process 1 chce nejakou praci, tak si rekne koordinatorovi.
Ten zadny takovy zaznam nenajde, tak si ulozi requested a
zacne process 1 monitorovat.
Process 2 chce stejnou praci, tak si rekne koordinatorovi.
Ten najde zaznam requested, tak si tam zadost prida a zatim neodpovida.
Process 1 spadne. Koodinator najde zaznam requested (podle pidu, ktery spadnul)
, najde v seznamu process 2, tak ho monitoruje a posle mu ok.
Process 2 posle praci do rabbita a rekne koordinatorovi, ze queued.
Koordinator pokud najde zaznam requested, tak vsem ve fronte cekajicich rekne
ne - prace uz je v queue a vytvori zaznam queued
Pozn.: Pokud worker spadne mezi tim, co poslal praci do rabbita a tim,
ze posila koordinatorovi queued, koordinator smaze zaznam requested
a pokud v te chvili nekdo pozada o stejnou praci, muze bezet 2x. Ale
to je hodne mala pravdepodobnost (nema proc spadnout).
Process 3 chce stejnou praci, ale koordinator rekne ne, protoze queued
Worker 1 dostane z rabbita praci, kdyz spadne, rabbit to posle jinam
Kdyz worker praci dodela:
ulozi praci do cauche
rekne koordinatorovi, je prace je done
udela ack na rabbit
Pozn.: Pokud process spadne mezi done a ack do rabbita, rabbit necha praci
znova spocitat. Ale to se opet bude stavat malokdy.
chovani koordinatora
request
prace neexistuje -> ok
prace je requested -> zaradit do fronty cekajich v requested (pak obvykle vratit no)
prace je queued -> no
prace je done a neni uz "stary" -> no
prace je done, ale je to uz hodne davno -> ok (a chovani jako kdyby tam zadny zaznam nebyl)
koordinator spadne - requestor dostane vyjimku a nejak se s tim vyrovna,
treba taky sam spadne (bud je to nejaky call z clienta, tak ho klient zopakuje,
nebo je to job z rabbita a rabbit ho requeue)
queue
nastavit tam zaznam queued, pokud je tam requested od stejneho pidu
vratit chybu, kdy tam neni nebo je tam cokoliv jineho - to je bud
spatne pouziti, nebo koordinator mezi volanimi spadnul. S tim se pak
musi nejak vyrovnat volajici - treba zkusit opet nejdriv reques
done
nastavi done v jakemkoliv pripade
Obecne kdyz koordinator spadne, tak se proste prijde o stav a nektere vypocty se muzou spustit
vicekrat. Ale po case se to zase ustali...
The text was updated successfully, but these errors were encountered:
Features
Implementation
{crawler, processor, url} => {state, pid}
Braindump
sha({worker, processor, url}) => {state, timestamp}
state = requested | queued | done
scenare
Ten zadny takovy zaznam nenajde, tak si ulozi requested a
zacne process 1 monitorovat.
Ten najde zaznam requested, tak si tam zadost prida a zatim neodpovida.
, najde v seznamu process 2, tak ho monitoruje a posle mu ok.
Koordinator pokud najde zaznam requested, tak vsem ve fronte cekajicich rekne
ne - prace uz je v queue a vytvori zaznam queued
Pozn.: Pokud worker spadne mezi tim, co poslal praci do rabbita a tim,
ze posila koordinatorovi queued, koordinator smaze zaznam requested
a pokud v te chvili nekdo pozada o stejnou praci, muze bezet 2x. Ale
to je hodne mala pravdepodobnost (nema proc spadnout).
Pozn.: Pokud process spadne mezi done a ack do rabbita, rabbit necha praci
znova spocitat. Ale to se opet bude stavat malokdy.
chovani koordinatora
treba taky sam spadne (bud je to nejaky call z clienta, tak ho klient zopakuje,
nebo je to job z rabbita a rabbit ho requeue)
spatne pouziti, nebo koordinator mezi volanimi spadnul. S tim se pak
musi nejak vyrovnat volajici - treba zkusit opet nejdriv reques
Obecne kdyz koordinator spadne, tak se proste prijde o stav a nektere vypocty se muzou spustit
vicekrat. Ale po case se to zase ustali...
The text was updated successfully, but these errors were encountered: