Является ли согласованный алгоритм Рафта византийским отказоустойчивым (bft) алгоритмом?
Является ли алгоритм консенсуса на плоту византийским отказоустойчивым алгоритмом?
Сколько (процентов) узлов требуется для достижения соглашения / консенсуса?
1 ответ
Нет, первоначальное описание Рафта (Диего Онгаро и Джона Оустерхаута (1)) не является византийским отказоустойчивым.
Представьте себе узел, который голосует дважды за определенный срок, или голосует за другой узел, у которого есть журнал, который не является современным, как его собственный, и этот узел становится лидером. Такое поведение может привести к разделению мозгов (случай, когда два узла считают себя лидером) или к несоответствиям в журнале.
Многие другие сценарии, такие как отправка поддельных, но действительных сообщений сердцебиения, также являются примерами, показывающими, что Raft не является византийским отказоустойчивым.
Однако есть несколько работ, где представлена византийская отказоустойчивая версия Raft (2).
Чтобы достичь консенсуса, Raft нуждается в том, чтобы большинство узлов было живым - > 50%
,
Это значит, чтобы терпеть t
неудачи, еще предстоит t+1
узлы работают правильно.
Так 2t+1
узлы должны быть t-устойчивыми, что является наименьшим количеством узлов, необходимых для достижения консенсуса при наличии частичной синхронизации (3) с просто допустимыми ошибками пропусков.