CAP-Theorem: Konsistenz, Verfügbarkeit und Partitionstoleranz
Cloud Computing hat in der digitalen Welt viele neue Wege eröffnet. Insbesondere die Verfügbarkeit von Computerressourcen im Internet ermöglicht eine schnelle Innovation, einen flexiblen Einsatz von Ressourcen und damit eine Anpassung der daraus resultierenden Skalierbarkeitsmöglichkeiten an die individuellen Bedürfnisse. Das CAP-Theorem zeigt jedoch, dass diese Flexibilität andere Aspekte behindern kann. Wir erklären, was hinter dem CAP-Theorem steckt (auch Brewer- Theorem oder Brewers-Theorem genannt ) und präsentieren einige Beispiele für Modelle, die diesem Theorem auf verteilten Systemen folgen .
- Was ist der CAP-Satz?
- Der CAP-Satz in der Praxis
- Beispiel für ein AP-System: Domain Name System
- CA-Systembeispiel: relationale Datenbankverwaltungssysteme
- Beispiel für ein CP-System: Finanz- oder Bankanwendungen
Was ist der CAP-Satz?
Das CAP-Theorem (auf Englisch CAP-Theorem ) besagt, dass es einem verteilten System nicht möglich ist, mehr als zwei der folgenden drei Eigenschaften gleichzeitig zu erfüllen oder zu garantieren:
- C onsistency – Alle Kunden sehen die gleichen Daten gleichzeitig.
- A V erfügbarkeit (Verfügbarkeit): alle Clients haben Lese- und Schreibzugriff zu jeder Zeit, da das System immer reagiert.
- P artition Toleranz – Das System funktioniert weiterhin als Ganze auch dann wenn Knoten im Netzwerk ausfallen oder nicht miteinander kommunizieren.
Das CAP-Theorem entstand aus einer Annahme des Informatikers Eric Brewer, der es während seines Vortrags auf dem Symposium über Prinzipien des verteilten Rechnens (PODC) im Jahr 2000 erwähnte. Daher ist dieser Vorschlag auf die Grenzen von Eigenschaften verteilter Systeme werden auch als Brewer- Theorem oder Brewers-Theorem bezeichnet . Im Jahr 2002 haben Seth Gilbert und Nancy Lynch vom MIT ihre Gültigkeit mit axiomatischen Beweisen unter Beweis gestellt und sie als Theorem etabliert.
Derzeit wird beim Entwurf eines neuen verteilten Systems dieser Satz befolgt und ein spezifisches Grundmodell ausgewählt, das zwei der drei Eigenschaften aufweist. Auf diese Weise kann die Verbindung mehrerer unabhängiger Computer in einem einzigen Netzwerksystem gemäß dem CAP-Theorem in die folgenden drei Kategorien eingeteilt werden:
- CP-System (Konsistenz und Partitionstoleranz)
- AP-System (Verfügbarkeit und Partitionstoleranz)
- CA-System (Konsistenz und Verfügbarkeit)
Der CAP-Satz in der Praxis
Um die Prinzipien des CAP-Theorems ein wenig klarer zu machen, präsentieren wir einige Beispiele für verteilte Systeme, die seine Gültigkeit demonstrieren. In jedem Fall wird auch hervorgehoben, wie der Satz von Brewer angewendet wird.
Beispiel für ein AP-System: Domain Name System
Ein bekanntes Beispiel für ein AP-System ist das DNS ( Domain Name System ). Diese zentrale Netzwerkkomponente ist für die Zuordnung von Domänennamen zu den entsprechenden IP-Adressen verantwortlich und basiert auf den Eigenschaften Verfügbarkeit und Partitionstoleranz . Dank der großen Anzahl vorhandener Server ist das System fast ausnahmslos verfügbar: Wenn ein DNS-Server ausfällt, übernimmt der nächste. Nach dem CAP-Theorem ist DNS jedoch inkonsistent : Wenn ein Eintrag in DNS geändert wird, kann es bis zu mehreren Tagen dauern, bis die Änderung an die gesamte Systemhierarchie übertragen wird und von allen Clients gesehen werden kann.
CA-Systembeispiel: relationale Datenbankverwaltungssysteme
Datenbankverwaltungssysteme, die dem relationalen Datenbankmodell folgen, sind ein gutes Beispiel für ein CA-System. Diese Systeme zeichnen sich vor allem durch ihre hohe Konsistenz und die höchstmögliche Verfügbarkeit aus . Beachten Sie jedoch, dass im Falle eines Konflikts die Verfügbarkeit zugunsten der Konsistenz abnehmen kann. In diesem Fall spielt die Sicherheit in Bezug auf die Partition eine untergeordnete Rolle.
Beispiel für ein CP-System: Finanz- oder Bankanwendungen
Verfügbarkeit ist eine der wichtigsten Eigenschaften der meisten verteilten Systeme, weshalb CP-Systeme in der Praxis selten sind . Diese Systeme erweisen sich jedoch in Bereichen wie Finanzen als sehr nützlich: Bankanwendungen, die zuverlässig Geld laden und überweisen müssen, hängen von Konsistenz und Partitionssicherheit ab , um die Möglichkeit falscher Eingaben auszuschließen wenn der Datenverkehr unterbrochen ist.