Sobes.tech
Middle+

V čem spočívá smysl teoremu CAP?

sobes.tech AI

Odpověď od AI

Věta CAP (Konzistence, Dostupnost, Odolnost vůči dělení sítě) říká, že v distribuovaném systému lze současně zajistit pouze dvě ze tří vlastností:

  • Konzistence (Consistency): Všechny uzly vidí stejné údaje ve stejnou dobu. Pokud jsou údaje na jednom uzlu změněny, tato změna se okamžitě odrazí na všech ostatních.
  • Dostupnost (Availability): Systém zaručuje, že každý požadavek dostane odpověď (bez chyb). Jakýkoli funkční uzel může zpracovávat požadavky.
  • Odolnost vůči dělení sítě (Partition Tolerance): Systém pokračuje v provozu i při síťových problémech, které rozdělí systém na několik izolovaných klastrů, přičemž uzly nemohou komunikovat mezi sebou.

Při síťovém dělení (Partition Tolerance) musí systém vybírat mezi konzistencí a dostupností:

  • CP systém: Upřednostňuje konzistenci (Consistency) před dostupností (Availability). Během dělení může systém být nedostupný, aby zajistil, že všechny dostupné uzly vidí konzistentní data. Žádosti o zápis mohou být odmítnuty.
  • AP systém: Upřednostňuje dostupnost (Availability) před konzistencí (Consistency). Během dělení systém zůstává dostupný, ale data mohou být nekonzistentní mezi částmi. Po vyřešení dělení je třeba data synchronizovat.
  • CA systém: Teoreticky existuje, ale nemůže existovat za reálných podmínek sítě, kde jsou dělení nevyhnutelná. V distribuovaném systému je třeba vždy brát v úvahu odolnost vůči dělení.

Věta CAP neříká, že systém nemůže být současně konzistentní a dostupný za normálních podmínek bez dělení. Platí právě při síťovém dělení.

Volba mezi konzistencí a dostupností za podmínek odolnosti vůči dělení závisí na požadavcích systému:

  • Bankovní systémy, kde je důležitá přesnost dat, často volí CP.
  • Sociální sítě nebo online obchody, kde je důležitá nepřetržitá dostupnost, i s určitým zpožděním synchronizace dat, často volí AP.