2016-04-20 4 views
0

Я тестирую Couchbase для приложения и сталкивался с несколькими сомнениями с XDCR, я читал Conflict resolution in XDCR. но не был точно уверен в том, что произойдет в следующем сценарии:Параллельные обновления с использованием XDCR Couchbase

У меня есть два кластера (по одному серверу, скажем, S1 и S2), на котором я копирую ведро в обоих направлениях с помощью XDCR.

Если S1 и S2 должны были изменить один и тот же документ одновременно, как будет решено получить результирующее обновление, учитывая, что оба они вносят одно изменение в документ? Будет ли ответ изменяться, если они внесут в документ другое количество изменений?

ответ

0

В принципе, если у них одинаковое количество ревизий - оба будут «правильными», так как это система Active-Active. Итак, вы вносили изменения в S1 и S2 одновременно - никто не получит изменений. После повторного обновления S1 или S2 другой сервер получит обновленный документ.

+0

Таким образом, такой сценарий приведет к потерям обновлений? –

+0

Я не потеряюсь. Оба кластера будут иметь документы, они будут просто разными, следующее обновление исправит это. –

1

В настоящее время Couchbase использует разрешение на основе разрешений на основе версий. Это означает, что документ, который обновился в большинстве случаев до разрешения конфликта, победит. Если документы с обеих сторон будут обновляться столько же раз, то один из них будет выбран случайным образом, чтобы выиграть. Например:

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

При использовании Couchbase XDCR с активной активной репликацией я рекомендовал бы, что для большинства случаев использования вы обновляете только определенный набор документов в одном кластере, а другой набор документов в другом кластере, чтобы избежать проблемы с одновременной записью.

Кроме того, как вы можете видеть выше, эта модель разрешения конфликтов может быть полезной только для конкретных случаев использования. В будущем будут представлены новые модели разрешения конфликтов, и вы сможете выбрать тот, который наилучшим образом соответствует вашему варианту использования. В ближайшей перспективе должна быть добавлена ​​модель «Last Write Wins», и эта модель будет использовать векторные часы, чтобы обеспечить более точное разрешение конфликтов.

Смежные вопросы