2017-09-29 2 views
2

Ich wundere mich über die Semantik Atomicity in der Chronik-Karte. Wenn ich eine Chronik Map über 2 Knoten (Server) geteilt habe und versuche, denselben Schlüssel in diese Map gleichzeitig auf beiden Knoten einzufügen, was ist die transaktionale Semantik?Chronik-Karte Atomarität Semantik

Wird der erste Satz erfolgreich sein und der zweite fehlschlagen?

Ich bin neugierig, wenn Chronik Map die gleiche Transactional Semantics wie Apache Zookeeper garantiert?

In meinem Anwendungsfall würde ich gerne auf die Tatsache verlassen, dass, wenn node1 einen Schlüssel K1 in die Karte einfügt, dieser Knoten2 in der Lage wäre, nach der Existenz von K1 zu suchen und wenn er nicht da wäre, würde er das definitiv wissen Es ist der erste, der K1 hinzufügt.

Effektiv gefragt, ob eine auf ChronikMap angelegt ist eine verteilte Transaktion, die über die 2 Knoten erstreckt.

Vielen Dank Clifford

Antwort

1

Chronicle Karte verwendet Eventual Consistency und der letzte gewinnt. Wenn Sie sich Mikro-Sekunden-Zeitskalen ansehen, befinden sich Knoten in einem Split-Brain-Knoten, da es keine Möglichkeit gibt, sie bei dieser Geschwindigkeit synchron zu halten. Dies ist beabsichtigt, da Map Millionen von Aktualisierungen pro Sekunde pro Server unterstützt. Im Allgemeinen ist es nicht schwer sicherzustellen, dass zwei Server den gleichen Schlüssel im normalen Betrieb nicht gleichzeitig aktualisieren. Z.B. Sie können alle Aktualisierungen mit Engine an einen Server übergeben oder die Schlüssel für die Aktualisierung partitionieren. Während verteilte Transaktionen klingen wie eine gute Idee, sollten Sie beachten, dass; - sie sind um viele Größenordnungen langsamer, - sehr schwer zu erholen, wenn Sie wie Split Brain Versagen haben. - Das Testen Ihrer Anwendung unter verschiedenen Fehlerbedingungen ist ein echter Schmerz.

Ich bin der Ansicht, dass es besser ist, ein System zu entwerfen, das diese Annahme nicht benötigt, und Sie werden wissen, wie es sich bei einem Fehler ohne ausgiebige Tests verhält. Geben Sie an, dass Sie den Tierpfleger in drei Rechenzentren installieren und sicherstellen, dass der Ausfall eines Rechenzentrums den Betrieb nicht stoppt, indem sichergestellt wird, dass kein Rechenzentrum die Hälfte der Knoten oder mehr hat (zwei Rechenzentren sind nicht ausreichend) Gehirn, das durch eine langsame Verbindung verursacht wird, beeinflusst dies jegliche Aktualisierungen, jedoch in einer vorübergehenden Form, die schwer zu reproduzieren oder zu testen ist. Mit der Chronikkarte können die Datenzentren für einen beliebigen Zeitraum getrennt werden und alle ihre Garantien werden eingehalten und Sie müssen keine weiteren Tests durchführen. In der Tat können Sie alle außer einem Knoten verlieren und immer noch voll funktionsfähig sein.

+1

Danke für die ausführliche Antwort Peter. Ich habe Aufträge, die an eines der 3 ausgehenden Gateways weitergeleitet werden können, um eine bestmögliche Lieferung an ein ECN zu ermöglichen (um eine hohe Verfügbarkeit sicherzustellen). Ich versuche zu garantieren, dass das erste Gateway, um eine Bestellung zu erhalten, diejenige ist, die dies an die Börse sendet und die anderen 2 sollten niemals. Ich wollte die eindeutige Bestell-ID zu Chronicle hinzufügen und alle drei Gateways prüfen lassen, ob diese Bestell-ID existiert, bevor ich eine Bestellung absende. Haben Sie basierend auf Ihren Empfehlungen Vorschläge dazu, wie Sie dies erreichen können? passt die Chronikkarte gut? – cliff