2012-04-09 9 views
9

Ich weiß nicht, ob das hier eine richtige Frage ist.Wie kann man die "Verfügbarkeit" des CAP-Theorems verstehen?

Bekanntlich bedeutet "A" im CAP-Theorem "Verfügbarkeit". Auf wikipedia, ist die Erklärung von „Verfügbarkeit“:

Availability: a guarantee that every request receives a response about whether it was successful or failed 

jedoch aus Sicht der Technik gibt es keine ABSOLUTE Verfügbarkeit. Wir können nur sagen, dass die Verfügbarkeit eines Systems ist 5'9 '(99,999%) oder sogar 8'9', aber wir können nicht sagen, dass die Verfügbarkeit eines Systems 100% ist, 100% verfügbares System nicht in der Realität verlassen , selbst wenn das System Millionen von duplizierten Knoten hat, richtig?

Das CAP-Theorem beweist, dass kein System die 3 Anforderungen gleichzeitig erfüllen konnte. Meine Frage ist, wenn ein System behauptet, sowohl "A" als auch "P" zu erfüllen, was ist die genaue Bedeutung dieses "A"? 6'9 'oder noch höher?

+0

Dies ist Wegthema für SO; gehört wahrscheinlich zu [cstheory.se] –

Antwort

10

Ich empfehle, dass Sie Wikipedia vermeiden und lesen Sie stattdessen die Definition, wie der Beweis von Gilbert and Lynch zur Verfügung gestellt.

"jede Anforderung empfängt von einem nicht ausgefallenen Knoten im System muss Ergebnis in einer Antwort"

und die dazugehörigen Fußnote, die Ihre Frage beantwortet

„Brewer hat ursprünglich nur fast alle Requests benötigt, um eine Response zu erhalten, da die probabilistische Verfügbarkeit das Ergebnis bei beliebigen Fehlern nicht verändert auftreten, der Einfachheit halber werden wir 100% Verfügbarkeit“

So erfordern, wenn fast alle Anfragen eine Antwort erhalten, oder wir lassen für beliebige Ausfälle auftreten, kann ein System in Betracht gezogen werden, um hohe Verfügbarkeit haben.

2

Die Verfügbarkeit in CAP bedeutet "Alle (nicht fehlerhaften) Knoten sind für Abfragen verfügbar". Es hat nichts mit dem Wikipedia-Link zu tun, der von "High Availability" handelt.

Zum Beispiel ist der PAXOS-Algorithmus CP (keine Verfügbarkeitseigenschaft), weil die Minoritätsknoten während einer Partition "den Mund halten". Wenn Sie jedoch Konsistenz benötigen, wird PAXOS als "Hochverfügbarkeit" bezeichnet.

Umgekehrt ist ein MySQL-Datenbankserver mit einem Knoten die CA (hat die Eigenschaft CAP Verfügbarkeit). Es kann neu starten (und stundenlang heruntergefahren werden, während es BIOS-Check, FileSystem-Check, DB Repair, etc.). Nach dem Start reagiert es erneut auf Abfragen. Das ist perfekte Verfügbarkeit (nach dem CAP-Theorem), aber für "High Availability" ist die Verfügbarkeit schrecklich.

+0

Dies wird hier http://guide.couchdb.org/editions/1/en/consistency.html#figure/1 visuell erklärt – user454322

1

Ich stimme Mark Burgess: The CAP Theorem Is Not a Theorem. Die CAP-Eigenschaften in der Vermutung von Brewer sind einfach nicht klar genug, um einen strengen mathematischen Beweis zu liefern. Der Grund dafür, dass die Verfügbarkeit schwer zu "verstehen" ist, könnte darin liegen, dass es in diesem Kontext einfach nicht klar definiert ist.

0

Eine interessante Sicht von Coda Hale

Ein System, dasVerfügbarkeit wählt wird weiterhin eine Netzwerkpartition behandeln alle Anfragen zu bedienen, auch wenn sie zu Inkonsistenzen (zB Knoten in verschiedenen Netzwerk-Partitionen führen beide akzeptieren möglicherweise widersprüchliche schreibt).

Ein System, das Konsistenz wird begrenzt die Menge der Recht Operationen während einer Netzwerk-Partition (zum Beispiel schreibt nicht akzeptiert werden, da sie führen könnten zu Konflikten/Inkonsistenzen) wählt.

Es ist nicht möglich, beide auszuwählen.

Ich nehme ein hypothetisches System auch nur während der Netzwerk-Partitionen können wählen, zum Absturz zu bringen, aber das wie ein sehr praktisches Design nicht ... scheint

Verwandte Themen