Cloud-Computing hat die digitale Welt um viele neue Mög­lich­kei­ten be­rei­chert: Die Be­reit­stel­lung von Computing-Res­sour­cen über das Internet bietet dabei ins­be­son­de­re schnelle In­no­va­tio­nen, flexible Res­sour­cen­nut­zung und damit auch ent­spre­chen­de Ska­lie­rungs­mög­lich­kei­ten, die sich ganz in­di­vi­du­ell auf die eigenen An­for­de­run­gen abstimmen lassen. Dass die Zu­si­che­rung dieser Fle­xi­bi­li­tät an anderen Stellen aber zu Kom­pro­mis­sen führt, zeigt das so­ge­nann­te CAP-Theorem auf. Wir erklären Ihnen, was hinter dem CAP-Theorem (auch: Brewers Theorem) steckt, und legen dar, wo sich diese Fest­stel­lung über verteilte Systeme in der Praxis konkret be­ob­ach­ten lässt.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kos­ten­güns­ti­ge vCPUs und leis­tungs­star­ke de­di­zier­te Cores
  • Höchste Fle­xi­bi­li­tät ohne Min­dest­ver­trags­lauf­zeit
  • Inklusive 24/7 Experten-Support

Was steckt hinter dem CAP-Theorem?

Das CAP-Theorem besagt, dass es nicht möglich ist, mehr als zwei der folgenden drei Ei­gen­schaf­ten gleich­zei­tig in einem ver­teil­ten System zu erfüllen bzw. zu ga­ran­tie­ren:

  • Con­sis­ten­cy (Kon­sis­tenz): Alle Clients sehen zum gleichen Zeitpunkt die gleichen Daten.
  • Avai­la­bi­li­ty (Ver­füg­bar­keit): Alle Clients können jederzeit Lese- und Schreib­zu­grif­fe durch­füh­ren, da diese stets vom System be­ant­wor­tet werden.
  • Partition Tolerance (Aus­fall­to­le­ranz): Das System kann trotz des Ausfalls einzelner Knoten, bzw. wenn einzelne Knoten nicht mehr mit­ein­an­der kom­mu­ni­zie­ren können, als Ganzes wei­ter­ar­bei­ten.
Fakt

Das CAP-Theorem geht auf eine Vermutung des In­for­ma­ti­kers Eric Brewer zurück, die er 2000 bei einem Vortrag im Rahmen des Symposium on Prin­ci­ples of Dis­tri­bu­ted Computing (PODC) ver­öf­fent­lich­te. Der Grundsatz über die Ein­schrän­kung der Ei­gen­schaf­ten ver­teil­ter Systeme wird aus diesem Grund auch Brewers Theorem genannt. Im Jahr 2002 stützten Seth Gilbert und Nancy Lynch vom MIT die Vermutung durch einen axio­ma­ti­schen Beweis und eta­blier­ten diese damit als Theorem.

Beim Aufbau eines neuen, ver­teil­ten Systems ori­en­tiert man sich heute an dem Theorem und wählt daher konkret ein Grund­mo­dell, das sich auf zwei der drei Ei­gen­schaf­ten fo­kus­siert. Dem­entspre­chend lassen sich Zu­sam­men­schlüs­se un­ab­hän­gi­ger Computer in einem einzelnen System nach dem CAP-Theorem generell in drei Ka­te­go­rien aufteilen:

  • CP-System (Kon­sis­tenz und Aus­fall­to­le­ranz)
  • AP-System (Ver­füg­bar­keit und Aus­fall­to­le­ranz)
  • CA-System (Kon­sis­tenz und Ver­füg­bar­keit)

Das CAP-Theorem in der Praxis

Um die Aussage des CAP-Theorems etwas deut­li­cher zu machen, stellen die nach­fol­gen­den Beispiele ver­teil­ter Systeme die Gül­tig­keit des Grund­sat­zes unter Beweis. Zudem wird her­vor­ge­ho­ben, in welcher Hinsicht das Theorem Brewers zur Geltung kommt.

AP-System-Beispiel: Das Domain Name System

Ein bekanntes Beispiel für ein AP-System ist das DNS, also das Domain Name System. Diese zentrale Netz­werk­kom­po­nen­te ist für die Auflösung von Domain-Namen zu IP-Adressen ver­ant­wort­lich und stellt die beiden Ei­gen­schaf­ten Ver­füg­bar­keit und Aus­fall­to­le­ranz in den Fokus. Dank der großen Zahl an Servern ist das System nämlich nahezu aus­nahms­los verfügbar. Fällt ein einzelner DNS-Server aus, springt der nächste ein. Ent­spre­chend des CAP-Theorems ist die Kon­sis­tenz beim DNS jedoch nicht gegeben: Wird ein DNS-Eintrag geändert, kann es sogar einige Tage lang dauern, bis diese Änderung an die gesamte Sys­tem­hier­ar­chie wei­ter­ge­ge­ben wurde und von allen Clients gesehen werden kann.

CA-System-Beispiel: Re­la­tio­na­le Datenbank-Ma­nage­ment-Systeme

Datenbank-Ma­nage­ment-Systeme, die auf dem re­la­tio­na­len Da­ten­bank­mo­dell basieren, sind ein gutes Beispiel für CA-Systeme. Diese Da­ten­bank­sys­te­me zeichnen sich nämlich vor allem durch eine hohe Kon­sis­tenz aus und streben zudem nach einer möglichst hohen Ver­füg­bar­keit. Im Zwei­fels­fall kann die Ver­füg­bar­keit al­ler­dings zugunsten der Kon­sis­tenz sinken. Aus­fall­si­cher­heit spielt derweil eine un­ter­ge­ord­ne­te Rolle.

CP-System-Beispiel: Finanz- bzw. Banking-An­wen­dun­gen

Eine hohe Ver­füg­bar­keit zählt im Großteil ver­teil­ter Systeme zu den wich­tigs­ten Ei­gen­schaf­ten, weshalb CP-Systeme in der Praxis eher eine Sel­ten­heit sind. Ihren Wert beweisen diese Systeme aber ins­be­son­de­re im Fi­nanz­we­sen: Banking-An­wen­dun­gen, die Geld­be­trä­ge zu­ver­läs­sig auf der Kon­ten­sei­te abbuchen und trans­fe­rie­ren müssen, sind auf Kon­sis­tenz und Aus­fall­si­cher­heit an­ge­wie­sen, um Fehl­bu­chun­gen aus­schlie­ßen zu können – auch im Fall von Störungen im Da­ten­ver­kehr.

Zum Hauptmenü