У меня проблема с плотом.
В статье «В поисках понятного алгоритма консенсуса (расширенная версия)» говорится:
Чтобы начать выборы, последователь увеличивает свой текущий срок и переходит в состояние кандидата. (в разделе 5.2)
и также говорится:
получатель должен иметь значение «Ответить ложно, если args.term‹ currentTerm »в AppendEntries RPC и RequestVot RPC
Итак, давайте представим эту сцену, есть 5 машин в системе плотов, и теперь машина 0 является лидером, машины с 1 по 4 - ведомыми, теперь это член 1. Внезапно машина 1 отключается от сети, а затем машина 1 истекает по таймауту, и он начинает выборы лидера, он отправляет RequestVot RPC, уверен, что это будет неудачно (сеть отключена). а потом начнутся выборы нового лидера ....... и так далее. Срок действия машины 1 увеличивается во много раз. Возможно увеличение до 10. Когда машина 1'Term увеличивается до 10, она подключается к сети. и ведущий (машина 0) отправляет сердцебиение на машину 1, а машина 1 ОТКЛЮЧАЕТ это сердцебиение (время машины 0 меньше, чем у машины 1), и теперь машина 1 не сможет повторно присоединиться к системе.