Узлы-последователи могут получить блок от предыдущего лидера во время смены лидера; но они не будут использовать его, пока блок не будет зафиксирован новым лидером, что может не произойти.
Репликация плота происходит в два этапа: этап подготовки и этап фиксации. И то, и другое происходит через сообщение Append
, которое имеет водяной знак committed
.
Первым делом новый лидер плота восстанавливает логи последователей. То есть он перезаписывает незафиксированные части журнала так, чтобы он соответствовал их собственным, а затем фиксирует их.
Как только номер перехода блока становится ниже установленного водяного знака узла, он может использоваться для бизнеса; до этого момента узел должен предполагать, что блок может быть неправильным и может быть удален.
Я настоятельно рекомендую поиграть с визуализацией на https://raft.github.io/:
- Отключить большинство узлов, но оставить активным лидер и еще один узел;
- запросить значение у лидера;
- Отключить лидера, включить другие узлы;
- Тайм-аут одного из только что активированных вами узлов (не одного со значением, которое вы запрашивали).
- Посмотрите, что произойдет.