Алгоритм плота в ETCD и алгоритме ZAB в Zookeeper оба с помощью журнала репликации для обновления состояния машины. Мне было интересно, можно ли создать подобную систему, просто используя выборы лидеров и версии.
Да, можно достичь консенсуса/линеаризуемости без репликации журнала. Первоначально проблема консенсуса была решена в статье Paxos Made Simple Лесли Лампорт (1998). Он описал два алгоритма: Single Decree Paxos, чтобы построить распределенный линеаризуемый регистр однократной записи и Multi-Paxos, чтобы сделать распределенный конечный автомат поверх добавления только журнала (упорядоченного массива регистров с однократной записью).
Append only logs - гораздо более мощная абстракция, чем регистры с однократной записью, поэтому неудивительно, что люди выбирают журналы через регистры. Кроме того, до публикации Vertical Paxos (2009) репликация журнала была единственным консенсусным протоколом, способным к изменению членства в кластере; что важно для множества задач: если вы не можете заменить неудавшиеся узлы, то в конечном итоге ваш кластер станет недоступным.
Но Vertical Paxos хорошая бумага, это было намного легче для меня, чтобы понять Raft's идею членства кластера через совместный консенсус, поэтому я написал a post о том, как адаптировать путь плота для единого декрета Паксоса.
С течением времени «один раз» характер Единого Декрета Паксос также разрешил превращать регистры с однократной регистрацией в распределенные линеаризуемые переменные, достаточно мощную абстракцию, подходящую для многих вариантов использования. В дикой природе я видел этот подход в Treode database. Если вам интересно, я написал об этом улучшенном SDP в сообщении How Paxos Works.
Так что теперь, когда у нас есть альтернатива регистрирует это имеет смысл рассматривать его, поскольку журнал репликация на основе является сложной и имеет внутренние ограничения:
- бревен, вы должны заботиться о журнале уплотнении и сборке мусора
- размера журнала ограничен размером одного узла
- протоколы для разделения журнала и миграции на новый кластер не очень хорошо известны
И почему эта система решила использовать журнал репликации.
Основанный на журналах подход является более старым, чем альтернатива, поэтому у него больше времени для завоевания популярности.
О вашем примере
Это трудно оценить, потому что вы не описали, как лидер выборов происходит и конфликты между лидерами будут решены, что стратегия для обработки сбоев и как изменить членство кластера.
Я считаю, что если вы их тщательно опишите, вы получите a variant of Paxos.
Я действительно предполагал, что выборы лидера сами будут использовать паксо. И было любопытно узнать, нужна ли сама запись для использования paxos или простого кворума при условии, что письменное значение содержит лидерскую эпоху и номер версии значения. – skyde