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.