RAFT: срочное условие для совершения записи

Я прочитал несколько документов по Raft и получил противоречивую информацию о коммите. Я понимаю, что запись может быть зафиксирована только в том случае, если известно, что она хранится на большинстве серверов, но есть ли какие-либо другие условия? Я читал, что также обязательно, чтобы запись из текущего термина сохранялась на каждом сервере, но в некоторых других документах об этом ничего не говорится. Любая помощь?


person vandermies    schedule 13.05.2016    source источник


Ответы (1)


Технически неверно, что запись, хранящаяся на большинстве серверов, фиксируется. Верно, что лидер определяет, что запись зафиксирована после того, как она была сохранена на большинстве серверов, но только в течение ее текущего срока. Запись из другого термина может храниться на большинстве серверов, но никогда не будет зафиксирована и даже позже будет перезаписана другим лидером. Это показано на рисунке 8 в документе Raft.

Вот почему лидер должен убедиться, что запись из его текущего срока зафиксирована, прежде чем он сможет считать любые (дополнительные) записи из предыдущих сроков зафиксированными. После избрания лидера он может реплицировать записи из предыдущего срока на большинство узлов без их фиксации. Если этот лидер затем выходит из строя, может быть выбран другой лидер, у которого есть записи из более позднего термина, и он перезапишет записи, которые были сохранены в большей части кластера. Это то, что показано на рис. 8, и именно поэтому техническое определение фиксации таково: запись в текущем сроке лидера фиксируется после того, как она сохранена в большей части кластера, и после того, как запись из термина лидера фиксируется, все записи из предыдущих терминов в журнале лидера неявно фиксируются.

На практике это означает, что при избрании лидера он обычно фиксирует неактивную запись, чтобы принудительно выполнить фиксацию в текущий срок. Лидер не увеличивает свой commitIndex до тех пор, пока запись об отсутствии операций не будет сохранена на большинстве серверов.

person kuujo    schedule 13.05.2016