На плоту бумага, раздел 5.4.2.
Если лидер выйдет из строя до фиксации записи, будущие лидеры попытаются закончить репликацию записи. Однако руководитель не может сразу сделать вывод о том, что запись из предыдущего срока зафиксирована, если она хранится на большинстве серверов. Может возникнуть ситуация, когда старая запись журнала хранится на большинстве серверов, но все еще может быть перезаписана будущим лидером.
Автор упомянул, что во избежание описанной выше ситуации
Чтобы устранить проблемы, подобные показанной на рисунке 8, Raft никогда не фиксирует записи журнала из предыдущих терминов путем подсчета реплик. Только записи журнала с текущего срока лидера фиксируются путем подсчета реплик; как только запись из текущего термина была зафиксирована таким образом, все предыдущие записи фиксируются косвенно из-за свойства сопоставления журнала.
Но разве не возникнет та же проблема?
Учитывая следующую ситуацию, которую предоставил автор
Когда S5
избран лидером, он смотрит только на свой текущий зафиксированный журнал, который равен (term3, index1)
, и это будет отменять term2
записи во всех подписчиках.
Как заставить лидера просматривать его собственный журнал подтверждений решает проблему?