Koordinace a synchronizace v distribuovaných systémech

V distribuovaných systémech chybí sdílená paměť a globální hodiny. To vytváří fundamentální problém: Jak zajistit, aby procesy spolupracovaly a nepřekážely si?

Tento problém se nazývá koordinace a jeho řešení vyžaduje synchronizaci - koordinovanou spolupráci procesů pomocí výměny zpráv.


Proč je koordinace obtížná?

  1. Absence sdílené paměti - procesy nemohou přímo sdílet stav
  2. Absence globálních hodin - těžké určit pořadí událostí
  3. Asynchronní komunikace - zprávy dorazí v různém pořadí/zpoždění
  4. Selhání - procesy a síť mohou selhat kdykoliv

Důsledek: Musíme explicitně řešit problémy, které v centralizovaných systémech řeší OS automaticky (mutexes, semafory, system clock).


Dva pilíře synchronizace

1. Časová synchronizace

Otázka: Jak sjednotit pohled na čas?

Fyzický čas (Physical Clock Sync)

Synchronizace reálného času (hodiny na zdi) mezi uzly.

Logický čas (Logical Time)

Místo sekund měříme kauzální pořadí událostí. Pokud události nesouvisí, jsou souběžné (concurrent).

Použití: Ordering zpráv, conflict detection, debugging distribuovaných systémů


2. Koordinace akcí

Otázka: Jak zajistit, aby procesy spolupracovaly bez konfliktů?

Řešíme synchronizační problémy - konkrétní koordinační úlohy:

Vzájemné vyloučení (Mutual Exclusion)

Problém: Kdo smí vstoupit do kritické sekce?

Náhrada za semafory/mutexy v prostředí bez sdílené paměti.

Algoritmy: Centralized, Token Ring, Ricart-Agrawala, Maekawa

Volba koordinátora (Leader Election)

Algoritmy pro výběr nového leadera (např. po pádu toho starého). Problém: Kdo bude vůdce skupiny? Algoritmy: Bully, Ring-based, Raft election

Konsenzus (Agreement)

Problém: Jak se shodnout na jedné hodnotě? Dosažení shody mezi procesy i při selháních.

Algoritmy: Paxos, Raft

Limity: konsenzus v distribuovaných systémech#FLP Impossibility - konsenzus v asynchronním systému s možností selhání není vždy možný

Transakce

Problém: Jak zajistit ACID vlastnosti napříč více uzly? Trade-off: Konzistence vs. dostupnost (blokující při výpadcích) Algoritmy: 2PC, 3PC

Group Membership

Problém: Kdo je členem skupiny?

Detekce globálního stavu

Problém: V jakém stavu náš systém je? Jsou nějaké uzly mrtvé? Trade-off: Rychlost detekce vs. přesnost (false positives)


Mechanismy koordinace

Všechny synchronizační problémy lze řešit pomocí tří základních návrhových vzorů.


Klíčová poznání

  1. Synchronizace ≠ Paralelismus
  2. Časová synchronizace je nástroj
  3. Mechanismy jsou vzory
  4. Trade-offy jsou nezbytné