Použití vláken v rámci uzlu distribuované sítě (3)
Užitečné odkazy
- Distsim knihovna
- Distsim příklady
- Python
threading
— Thread-based parallelism - Python
nonlocal
statement
Distsim changelog 11.11.2020
Node.poll_from
- commit 1068bd7
Simulace selhání workera
Dnešním rozšířením bude simulace selhání workera během výpočtu. Nová distribuovaná síť by tedy měla fungovat následovně:
- Jakmile nastartuje
worker
, oznámí uzlumaster
, že je připraven. - Nastartovaný
worker
se pravidelně hlásí uzlumaster
skrze Heart beats. - Uzel
master
si udržuje aktuálně aktivní uzlyworker
a přiřazuje jim úlohy. - Práce je přiřazena okamžitě jakmile nějaký uzel
worker
oznámí, že práci dokončil, nebo se připojíworker
nový (např. restart po selhání). - Jakmile se po nějaké době přestane některý z uzlů
worker
hlásit, takmaster
uzelworker
vyřadí. V případě, že mělworker
přidělenou práci,master
ji přiradí někomu jinému. - Pokud se nějaký
worker
restartuje a během nějaké doby se mumaster
neozve. Vypne se. - Master se vypne jakmile dokončí veškerou práci.
Deadlock semaforů
Při práci si dávejte pozor na semafory. Pokud někde čekáte na semafor donekonečna, může nastat deadlock.
Jak simulovat selhání?
Například za pomoci generování náhodného čísla. Celý kód uzlu worker
se může nacházet uvnitř while
cyklu, ten se stará o samotný “restart”.
Úkol
Naprogramujte rozšířenou verzi Heart Beats s podporou selhání uzlu worker
.