2016-01-08 7 views
2

Пусть 3-член плота кластера а [мастер], Ь, сЧто будет тиражируемых но неподтвержденными бревен в протоколе плота

Клиент отправляет журнал на а, а дублирует его б и с, а применять журнал на машину состояния и ответ клиенту. Затем происходит сбой перед тем, как b и c имеют возможность воспроизвести зафиксированное состояние на b и c.

b заменяет лидера кластера. Что произойдет с незафиксированным журналом, когда журнал был отправлен клиенту?

Будет ли оно снова реплицировано b или просто отброшено?

Теперь предположим, 4-членом плота кластера а [MASTER], b, c, d

Клиент отправляет журнал на а, а копирует его б и в (не г), А применяется журнал на машину состояния и отвечает клиенту, затем происходит сбой перед репликацией зафиксированного состояния на b и c и d.

d заменяет лидера кластера. Тогда что произойдет с незафиксированным журналом, когда журнал был отправлен клиенту? будет ли это просто отброшено?

ответ

2

Я думаю, что вы сбиваете с толку «совершенное» с «прикладным». Запись считается совершенной, поскольку она была сохранена на большинстве серверов, хотя пока не применяется. B становится лидером, потому что его журнал обновлен и когда ему удастся применить одну запись из своего собственного срока, будет применяться также эта запись от A.

В вашем втором сценарии D не может быть лидером, потому что его журнал не вверх на сегодняшний день, и B и C не будут голосовать.

0

Раздел 5.4.2 и рисунок 8 в 《In Search of an Understandable Consensus Algorithm (Extended Version)》 говорят о более сложной ситуации.

Q1. Любой незафиксированный журнал с другим термином от лидера CurrentTerm может применяться только в том случае, когда заносится новый журнал (логарифмический период равен CurrentTerm). Или они останутся без изменений.

Q2. d не будет лидером (как S5 на рисунке 8.e)

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

  • Нет связанных вопросов^_^