• Cílem je zajistit, aby systém i přes chyby v jednotlivých uzlech nebo komponentách fungoval spolehlivě, udržoval konzistentní stav a poskytoval očekávané služby.

  • Selhání uzlů nebo komunikačního kanálu vede k chybám.

  • Obecně by měly DS tolerovat určité množství chyb.

Základní vlastnosti DS:

  • Dostupnost - dostupnost systému v čase
  • Spolehlivost - doba běhu bez chyb
  • Bezpečnost - nedojde ke katastrofickému selhání při chybě
  • Udržovatelnost - jak snadno lze odstranit chyby
  • Vysoká dostupnost vs. vysoká spolehlivost.
  • Různé metriky
    • MTTF - Mean Time To Failure
    • MTTR - Mean Time To Repair
    • MTBF - Mean Time Between Failures

Klasifikace chyb

Podle trvání

  • Přechodná (transient) - objeví se jednou a zmizí.
    • Třeba výpadek signálu.
  • Přerušovaná (intermittent) - chyba se objevuje a mizí.
    • Chvíli funguje vpohodě, pak chyba, pak vpohodě, …
  • Trvalá (permanent) - chyba zůstává do vyřešení.
    • Objeví a už nezmizí (např. odejde HDD).

Podle projevu

chybapopis
stop chybaserver se vypne, až do chyby funguje správně
chyba vynecháníselhání poslání či přijetí zprávy
chyba časováníodpověď není doručena v daném časovém intervalu
chyba odpovědiodpověď je nesprávná
náhodná chyba(Byzantská) náhodná odpověď v libovolném čase

Selhání uzlu

  • V asynchronních systémech je obtížné přímo určit, že nastala chyba.
    • Komunikace probíhá bez nějakého pevného časového rámce a tudíž detekce chyby může být komplikovaná.
  • V synchronních systémech existuje časový rámec pro vykonání operací a doručení zpráv.
    • Selhání uzlu může být detekováno, pokud nedojde k očekávané akci v daném časovém rámci.
  • Částečně-synchronní systémy jsou jako synchronní systémy bez omezení času.
    • Pro synchronizace se využívají časovače.
    • Částečně synchronní systémy jsou často využívány v odvětvích, kde je potřeba nějaká synchronizace, ale úplně synchronní systémy by byly příliš restriktivní nebo nemožné.

Modely detekce chyb

  • Fail-stop:
    • Okamžité ukončení a spolehlivá detekce chyby.
  • Fail-noisy:
    • Eventuálně spolehlivě detekovatelné.
  • Fail-silent:
    • Nelze rozlišit pád a vynechání.
    • Např. Nevíme, jestli nefunguje uzel nebo kanál.
  • Fail-safe:
    • O chybě nevíme nic, ale chyby jsou neškodné.
  • Fail-arbitrary:
    • O chybě nevíme nic.
    • Teoreticky může způsobit katastrofu.

Redundance

  • Základní nástroj pro konstrukci distribuovaných systémů s tolerancí chyb. Druhy redundance:
DruhPopis
Informační redundanceJe záměrně zavedena za účelem zvýšení spolehlivosti, bezpečnosti nebo odolnosti vůči chybám v přenosu nebo zpracování inforací (například paritní bity, kontrolní součty, duplikace dat, …)
Časová redundanceJe využíván v různých oblastech, kde opakování časových vzorků nebo operací může přinést nějaký užitek, zejména v kontextu spolehlivosti, bezpečnosti nebo odolnosti vůči chybám (například opětovné odvysílání zprávy)
Fyzická redundanceTýká se opakování nebo zdvojení fyzických prvků nebo komponent v systému s cílem zvýšit spolehlivost, dostupnost nebo odolnost vůbec chybám (například záložní uzly, servery, napájení, propojení, RAID, …)
  • Systém je -tolerantní pokud přežije výpadek uzlů.

Použitím redundance:

  • Zavádíme abstrakci (komunikujeme se skupinou na místo jednoho uzlu)
  • Skupiny jsou dynamické (mohou vznikat, zanikat, uzly odchází, přichází nebo mohou být součástí více skupin)
  • Organizace uvnitř skupiny, může být rozdílná podle potřeb.

Tolerance Byzantských chyb: Idea

  • Byzantská chyba v kontextu DS se vztahuje k situaci, kdy některé uzly nebo části systému mohou selhat a chovat se nespolehlivě.

  • Může zahrnout i záměrné škodlivé chování.

  • Termín vychází z myšlenky, že byzantský generál, který vede armádu, se může rozhodnout jednat zrádně a poslat falešné informace či dokonce úplně selhat.

  • Tolerování Byzantských chyb vyžaduje uzlů.

  • Shoda je na rozhodnutí většiny.

  • Vyžaduje exponenciální počet zpráv (velice nákladné).

Postup:

  • Máme server, který předá zprávu uzlům
  • Ty si pak mění zprávy mezi sebou a odpovědi od kolegů si značí do tabulky
  • Podle tabulky vyhodnotí výsledek (podle většiny) a znovu si přepošle s ostatními
  • Následně dochází ke shodě