Когда в Raft начинается и заканчивается семестр?

Я читал статью «В поисках понятного алгоритма консенсуса». Я не понимаю, как работает термин.

У меня две мысли.

  1. Срок начинается с выборов и заканчивается следующими выборами. Следующие выборы могут произойти из-за краха действующего лидера. Пока нынешний руководитель работает безупречно, срок может длиться очень долго.

  2. Окончание срока определяется, когда он начинается. Например, после победы сервера на выборах срок начинается и заканчивается через 30 минут. Затем через 30 минут лидер перестает посылать сердцебиение, чтобы вызвать новые выборы.

Итак, какой из них правильный? Я чувствую, что первая мысль имеет больше смысла и обеспечивает лучшую производительность.


person Kanjie Lu    schedule 10.01.2020    source источник


Ответы (1)


Любой из вариантов будет работать, но ваш первый вариант предпочтительнее. Если вы перестанете отправлять биения, вам, вероятно, придется подождать некоторое время (возможно, несколько секунд), прежде чем будет выбран новый мастер. Теоретически вы можете избежать этого ожидания и сразу же инициировать выборы, но выборы всегда немного мешают, поэтому обычно можно проектировать системы так, чтобы их максимально избегать.

Единственный раз, когда действительно необходимы выборы, - это если что-то пошло не так: например, сбой связи или отказ некоторых узлов. На практике кластеры могут работать очень долго (недели? Годы?) Без сбоев, поэтому им не нужно более частые выборы.

Также обратите внимание, что термины, на самом деле, не имеют четко определенного (глобального) начала и конца из-за асинхронного характера коммуникации и сложности определения понятия времени в распределенной системе. Узел может полагать, что термин все еще продолжается, даже если все остальные узлы считают, что он либо не начался, либо закончился.

person Dave Turner    schedule 11.01.2020
comment
большинству людей нужно обновлять ежемесячно, поэтому я бы предположил, что годы могут быть немного оптимистичными :-) - person simbo1905; 13.01.2020