V distribuovaných systémech bez sdílené paměti potřebujeme explicitní koordinaci mezi procesy. Existují tři základní mechanismy, jak toho dosáhnout:
[!important] Leader-based V základní klasifikaci rozlišujeme 3 strategie:
- Permission-based, Token-based, Quorum-based.
V širším architektonickém pohledu mezi koordinační přístupy patří i leader-based koordinace, která je jednoduchá, ale leader představuje single point of failure Algoritmy typu RAFT kombinují centralizované řízení (Leader) s quorum-based rozhodováním (potvrzení většinou).
Distribuované systémy řeší fundamentální problém synchronizace:
Jak zajistit, aby procesy spolupracovaly a nepřekážely si, když nemají sdílenou paměť ani globální hodiny?
Konkrétní problémy:
Všechny tyto problémy řeší stejné tři koordinační vzory.
Všechny tři mechanismy řeší:
Hlavní rozdíl je v tom, kolik procesů musí spolupracovat a jak se zvládají selhání.
| Požadavek | Doporučený mechanismus |
|---|---|
| Malý systém (N < 20), nízká konkurence | Token-based |
| Férové uspořádání, plná distribuce | Permission-based |
| Velký systém (N > 50), odolnost vůči výpadkům | Quorum-based |
Příklad: Mutual exclusion může být implementován všemi třemi způsoby - Token Ring (token), Ricart-Agrawala (permission), Maekawa (quorum).
Centralizace (Token) ←→ Distribuce (Permission/Quorum)
Nízké zprávy (Token) ←→ Vysoké zprávy (Permission)
Nízká odolnost (Token) ←→ Vysoká odolnost (Quorum)
Jednoduchá logika (Token) ←→ Složitá logika (Quorum)
Neexistuje “nejlepší” mechanismus - záleží na konkrétním problému a prostředí.