2016-04-20 8 views
0

Ich teste Couchbase für eine Anwendung und stieß auf einige Zweifel mit XDCR, ich lese Conflict resolution in XDCR. Aber ich war mir nicht sicher, was im folgenden Szenario passieren würde:Concurrent Updates mit XDCR Couchbase

Ich habe zwei Cluster (je 1 Server, sagen wir S1 und S2), auf denen ich einen Eimer mit XDCR repliziere.

Wenn S1 und S2 das gleiche Dokument gleichzeitig ändern würden, wie würde das resultierende Update entschieden werden, wenn man bedenkt, dass beide eine einzige Änderung am Dokument vornehmen? Würde sich die Antwort ändern, wenn sie eine andere Anzahl von Änderungen am Dokument vorgenommen hätten?

Antwort

0

Grundsätzlich, wenn sie die gleiche Anzahl von Revisionen haben - beide werden "korrekt" sein, da es ein Active-Active-System ist. Sie haben also Änderungen in S1 und in S2 gleichzeitig vorgenommen - niemand wird die Änderungen erhalten. Sobald S1 oder S2 wieder aktualisiert wird, erhält der andere Server das aktualisierte Dokument.

+0

Also ein solches Szenario würde zu verlorenen Updates führen? –

+0

Ich werde nicht verloren gehen. Beide Cluster haben die Dokumente, sie wären nur anders, das nächste Update würde das beheben. –

1

Couchbase verwendet derzeit revisionsbasierte Konfliktlösung. Das bedeutet, dass das Dokument, das am häufigsten vor der Konfliktlösung aktualisiert wurde, gewinnt. Wenn Dokumente auf beiden Seiten die gleiche Anzahl von Malen aktualisiert werden, dann wird einer von ihnen zufällig ausgewählt, um zu gewinnen. Zum Beispiel:

S1: Updated once, S2: Updated twice. S2 wins 
S1: Updated twice, S2: Updated once. S1 wins 
S1: Updated once, S2: Updated once. Random winner 

Wenn Couchbase XDCR mit Aktiv-Aktiv-Replikation würde ich, dass für die meisten Anwendungsfälle empfiehlt, nur einen bestimmten Satz von Dokumenten in einem Cluster und den anderen Satz von Dokumenten in dem anderen Cluster aktualisieren, zu vermeiden Probleme mit gleichzeitigem Schreiben.

Wie Sie oben sehen können, ist dieses Konfliktlösungsmodell möglicherweise nur für bestimmte Anwendungsfälle von Vorteil. In Zukunft werden mehr Konfliktlösungsmodelle eingeführt, und Sie werden in der Lage sein, diejenige auszuwählen, die am besten zu Ihrem Anwendungsfall passt. Ein "Last Write Wins" -Modell sollte in naher Zukunft hinzugefügt werden und dieses Modell wird Vektor-Takte verwenden, um eine feinkörnigere Konfliktlösung bereitzustellen.