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
nonlocalstatement
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ý
workerse pravidelně hlásí uzlumasterskrze Heart beats. - Uzel
mastersi udržuje aktuálně aktivní uzlyworkera přiřazuje jim úlohy. - Práce je přiřazena okamžitě jakmile nějaký uzel
workeroznámí, že práci dokončil, nebo se připojíworkernový (např. restart po selhání). - Jakmile se po nějaké době přestane některý z uzlů
workerhlásit, takmasteruzelworkervyřadí. V případě, že mělworkerpřidělenou práci,masterji přiradí někomu jinému. - Pokud se nějaký
workerrestartuje a během nějaké doby se mumasterneozve. 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.