CAP-Theorem: Konsistenz, Verfügbarkeit und Ausfalltoleranz

Cloud-Computing hat die digitale Welt um viele neue Möglichkeiten bereichert: Die Bereitstellung von Computing-Ressourcen über das Internet bietet dabei insbesondere schnelle Innovationen, flexible Ressourcennutzung und damit auch entsprechende Skalierungsmöglichkeiten, die sich ganz individuell auf die eigenen Anforderungen abstimmen lassen. Dass die Zusicherung dieser Flexibilität an anderen Stellen aber zu Kompromissen führt, zeigt das sogenannte CAP-Theorem auf. Wir erklären Ihnen, was hinter dem CAP-Theorem (auch: Brewers Theorem) steckt, und legen dar, wo sich diese Feststellung über verteilte Systeme in der Praxis konkret beobachten lässt.

IONOS Cloud Compute Engine

Mittelständische und große Unternehmen wählen die Cloud Made in Germany. IaaS und PaaS vom Hidden Champion für Hidden Champions.

Sicher
Zuverlässig
Flexibel

Was steckt hinter dem CAP-Theorem?

Das CAP-Theorem besagt, dass es nicht möglich ist, mehr als zwei der folgenden drei Eigenschaften gleichzeitig in einem verteilten System zu erfüllen bzw. zu garantieren:

  • Consistency (Konsistenz): Alle Clients sehen zum gleichen Zeitpunkt die gleichen Daten.
  • Availability (Verfügbarkeit): Alle Clients können jederzeit Lese- und Schreibzugriffe durchführen, da diese stets vom System beantwortet werden.
  • Partition Tolerance (Ausfalltoleranz): Das System kann trotz des Ausfalls einzelner Knoten, bzw. wenn einzelne Knoten nicht mehr miteinander kommunizieren können, als Ganzes weiterarbeiten.
Fakt

Das CAP-Theorem geht auf eine Vermutung des Informatikers Eric Brewer zurück, die er 2000 bei einem Vortrag im Rahmen des Symposium on Principles of Distributed Computing (PODC) veröffentlichte. Der Grundsatz über die Einschränkung der Eigenschaften verteilter 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 axiomatischen Beweis und etablierten diese damit als Theorem.

Beim Aufbau eines neuen, verteilten Systems orientiert man sich heute an dem Theorem und wählt daher konkret ein Grundmodell, das sich auf zwei der drei Eigenschaften fokussiert. Dementsprechend lassen sich Zusammenschlüsse unabhängiger Computer in einem einzelnen System nach dem CAP-Theorem generell in drei Kategorien aufteilen:

  • CP-System (Konsistenz und Ausfalltoleranz)
  • AP-System (Verfügbarkeit und Ausfalltoleranz)
  • CA-System (Konsistenz und Verfügbarkeit)

Das CAP-Theorem in der Praxis

Um die Aussage des CAP-Theorems etwas deutlicher zu machen, stellen die nachfolgenden Beispiele verteilter Systeme die Gültigkeit des Grundsatzes unter Beweis. Zudem wird hervorgehoben, 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 Netzwerkkomponente ist für die Auflösung von Domain-Namen zu IP-Adressen verantwortlich und stellt die beiden Eigenschaften Verfügbarkeit und Ausfalltoleranz in den Fokus. Dank der großen Zahl an Servern ist das System nämlich nahezu ausnahmslos verfügbar. Fällt ein einzelner DNS-Server aus, springt der nächste ein. Entsprechend des CAP-Theorems ist die Konsistenz beim DNS jedoch nicht gegeben: Wird ein DNS-Eintrag geändert, kann es sogar einige Tage lang dauern, bis diese Änderung an die gesamte Systemhierarchie weitergegeben wurde und von allen Clients gesehen werden kann.

CA-System-Beispiel: Relationale Datenbank-Management-Systeme

Datenbank-Management-Systeme, die auf dem relationalen Datenbankmodell basieren, sind ein gutes Beispiel für CA-Systeme. Diese Datenbanksysteme zeichnen sich nämlich vor allem durch eine hohe Konsistenz aus und streben zudem nach einer möglichst hohen Verfügbarkeit. Im Zweifelsfall kann die Verfügbarkeit allerdings zugunsten der Konsistenz sinken. Ausfallsicherheit spielt derweil eine untergeordnete Rolle.

CP-System-Beispiel: Finanz- bzw. Banking-Anwendungen

Eine hohe Verfügbarkeit zählt im Großteil verteilter Systeme zu den wichtigsten Eigenschaften, weshalb CP-Systeme in der Praxis eher eine Seltenheit sind. Ihren Wert beweisen diese Systeme aber insbesondere im Finanzwesen: Banking-Anwendungen, die Geldbeträge zuverlässig auf der Kontenseite abbuchen und transferieren müssen, sind auf Konsistenz und Ausfallsicherheit angewiesen, um Fehlbuchungen ausschließen zu können – auch im Fall von Störungen im Datenverkehr.