2016-05-04 4 views
0

Angenommen habe ich einen Couchbase Cluster mit 2 Datenknoten: 1 und 2.Couchbase - was passiert mit alten Dokumenten auf einem Knoten, wenn er wieder online ist?

Dokument X auf Knoten 1 und Knoten 2 auf replizierten

Angenommen Knoten 1 untergeht aktiv ist, und Dokument X zu gefördert "aktiv" auf Knoten 2. Knoten 1 ist für eine Weile inaktiv; In der Zwischenzeit wurden viele Änderungen an Dokument X vorgenommen.

Einige Zeit später wird Knoten 1 wieder online geschaltet. Denken Sie daran, dass Dokument X in Knoten 1 'aktiv' war.

Was passiert? Es scheint, als wäre das Dokument X auf beiden Knoten aktiv. Kann Couchbase diesen Konflikt selbst behandeln oder muss ich irgendetwas in meinem Anwendungscode tun, um ihn zu lösen?

Antwort

1

Um ein wenig tiefer zu gehen, wenn das vBucket auf Knoten 2 aktiviert wird, bedeutet das, dass ein Failover entweder manuell oder automatisch erfolgt. Wenn Knoten 1 wieder verfügbar ist, müssen Sie diesen Knoten wieder hinzufügen. Wenn Sie noch nicht neu ausbalanciert haben, können Sie den Knoten mithilfe von Delta Node Recovery wieder hinzufügen, und der Cluster holt Knoten 1 von dort wieder auf, wo er aufgehört hat. Die andere Möglichkeit besteht darin, diesen Knoten hinzuzufügen, als ob er ein neuer Knoten wäre, und Couchbase wird diesen Knoten entfernen und neu auffüllen. Für eine gründlichere Erklärung, go read the newer 4.5 beta documentation. Es gilt für 4.0 und 4.1, und das meiste sogar 3.x.

Wie auch immer, lange Geschichte kurz ... Couchbase wird sich darum kümmern, Knoten 1 oben zu fangen, wo es auf die eine oder andere Weise als das Objekt, wenn es auf Knoten 2 aktualisiert wurde, während Knoten 1 war, wird die neuere Version erhalten .

0

Dies wird durch Rebalancing auf der vBucket-Ebene behandelt.

Nach this blog post about rebalancing:

Wenn ein Client ... Anfragen an den Cluster zu senden, dauert es die Schlüssel und Hashes es mit der Liste der vbuckets. Es sieht dann die Karte, die es bestimmen muss, welcher Server für das vbucket aktiv ist. Wenn die Karte korrekt ist, akzeptiert der Server die Anfrage ... Wenn die vbucket-ID, die der Client ... an einen Server sendet, auf diesem Server nicht aktiv ist, wird sie mit einem Fehler antworten, der 'not my vbucket' lautet ". Während ein Rebalance, wenn ein Client nicht rechtzeitig aktualisiert wird, hat einige Anfragen 'im Flug' oder irgendwie nur das Memo verfehlt, der alte Knoten wird mit einem 'nicht mein vbucket' Fehler auf alle Anfragen danach reagieren Zeitpunkt.

Dies ist ein alter Blog-Beitrag, aber es gilt immer noch. Im Grunde brauchen Sie sich keine Gedanken über Konflikte mit alten Dokumenten zu machen, wenn ein Knoten wieder online ist.

Verwandte Themen