Spolehlivost distribuovaného systému popisuje, nakolik lze systému důvěřovat, že bude dlouhodobě poskytovat správnou službu navzdory chybám, poruchám a nepředvídatelným podmínkám prostředí.
Je to zastřešující vlastnost, která není o jednom běhu systému, ale o jeho chování v čase.
[!note] Jak získat spolehlivost
Protože komponenty selhávají, spolehlivost získáme jen tím, že máme všeho víc. (redundance)
Typy redundance:
- Informační redundance: Přidáme bity navíc pro opravu chyb (ECC paměť, checksumy v paketech).
- Časová redundance: Když se akce nepovede, zkusíme to znovu (retry logic v RPC).
- Fyzická redundance (replikace): Místo jednoho serveru máme tři.
Vlastnosti co chceme
- Availability (Dostupnost):
- Pravděpodobnost, že systém poskytuje službu v daném okamžiku.
- Metrika: Uptime.
- Řeší: replikace, failover, quorum-based algoritmy, slabší modely konzistence.
- Reliability (Spolehlivost v užším smyslu):
- Schopnost běžet nepřetržitě bez selhání po určitou dobu.
- Metrika: MTBF.
- Řeší: architektura systému, redundance, recovery mechanizmy.
- Safety (Bezpečnost provozu):
- Když už systém selže, nesmí způsobit katastrofu (např. jaderná elektrárna, ovládání brzd).
- Řeší: synchronizační algoritmy, konsenzus, safety properties.
- Integrity (Integrita):
- Systém nesmí data náhodně měnit nebo poškodit.
Řeší: konzistence, atomické operace, transakce.