гарантирует ли в конечном итоге согласованность, что в любое время машина реплики имеет тот же префикс истории

Я искал ответ на этот вопрос в Stackoverflow и Google в целом, но я всегда получаю «только» это возможное обещание согласованности, что в конечном итоге любая запись будет доставлена ​​​​на все узлы в кластере/кворуме.

Если это не гарантирует этого, то почему это такая популярная схема согласованности?

если узел X делает op1, op2, op3, и все эти обновления распространяются на узел Y, но в порядке op3, op2, op1, это не очень полезно, не так ли?

В префикс истории я имею в виду, что если текущая история операций узла X является op1,op2,op3, то если узел Y имеет историю операций op1 или op1,op2, то он имеет тот же префикс история узла X


person nadavgam    schedule 22.08.2020    source источник


Ответы (1)


Нет, не нужно.

Например, рассмотрим:
op1 в момент времени t1 делает 'set key-1=5'
op2 в момент времени t2 делает 'set key-1=6'
op3 в момент времени t3 делает 'set key -1=7'

Большинство стратегий асинхронной репликации будут использовать ту или иную форму журнала изменений для синхронизации между первичной и вторичной репликами. Теперь, если бы мне пришлось реализовать схему репликации «консистентность в конечном итоге» в моей БД или распределенном хранилище, я бы просто выполнил сжатие журнала на вышеуказанных шагах и реплицировал только последнюю операцию (key-1=7 ) на вторичку. С другой стороны, для схемы «последовательный префикс» мне нужно было бы реплицировать все 3 операции в одном и том же порядке.

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

person itisravi    schedule 24.08.2020
comment
@nadavgam, это отвечает на твой вопрос? - person itisravi; 28.08.2020