В Рафте, когда последователь узнает, что запись стала совершенной? Может ли устаревший узел победить на выборах?

В плоту, если журнал тиражируется большинству, он считается зафиксированным в лидере. Затем лидер отправляет сообщение последователю, чтобы сообщить, что запись становится коммитом. Если нет, то как и когда подписчик узнает, что запись зафиксирована???

Другой вопрос, может ли устаревший победить на выборах в следующем случае? 5 узлов кластера, узел А является текущим лидером.

A: 0 1 2 3 4

B: 0 1 2 3 4

C: 0 1 2 3 4

D: 0 1 2 3

E: 0 1

Когда узел A (текущий лидер) получает запрос (запись 4), регистрирует его и реплицирует его на узел B и узел C. Затем узел A применяет запись 4 в конечном автомате и отвечает клиенту (В этом пункте запись считается принятой узлом Б, а узел С или нет?). Затем происходит сбой узла A и узла B, узел D сам начинает новое голосование по выборам и получает голос по узлу E, а затем выигрывает выборы. Это случится?

2 ответа

RPC AppendEntries, который лидер отправляет подписчикам, включает индекс фиксации, подписчики могут применять эти записи журнала к своим конечным автоматам, когда они получают это от лидера. Последователи только получают индекс коммитов от лидера, он никогда не вычисляет его сам. В случае сбоя лидера новый лидер рассчитает соответствующий индекс фиксации и отправит его с вызовами RPC AppendEntries.

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

Как и когда последователь узнает, что запись стала совершенной???

  • Он либо получил сердцебиение от текущего лидера с последним подтвержденным индексом.
  • Или, если лидер потерпел неудачу, прежде чем он смог сообщить другим о новом индексе, будет выбран новый лидер, который в конечном итоге зафиксирует новые записи из текущего термина и, таким образом, неявно объявит этот предыдущий индекс (из предыдущего термина) как зафиксированный.

Примечание: лидер может зафиксировать индекс только из своего собственного термина (см. §5.4.2 Фиксация записей из предыдущих терминов в (1)). Если новый избранный лидер хочет знать, что является последним подтвержденным индексом, он должен зафиксировать запись без опроса сразу после своего избрания.

Устаревший узел может победить на выборах?

Нет. Чтобы получить голос от другого партнера, узел должен иметь журнал, по крайней мере актуальный 1, как журнал узла, от которого он пытается получить голос. (также другой узел не должен предоставлять кому-либо еще голос в этот срок)

1 Содержит запись от более позднего срока. Или, если последние записи имеют тот же номер термина, он содержит больше записей.

Другие вопросы по тегам