Рекомендуется установить нечетное число. Я сомневаюсь, что по мере того, как кто-то уходит из нечетного набора, у нас есть набор четных чисел. Количество членов колеблется между четными и нечетными, когда они уменьшаются один за другим. У нас всегда нет нечетного сценария участника. Может ли кто-нибудь объяснить, как работает голосование в MongoDB?
Голосование в MongoDB
Ответы (1)
Голосование осуществляется большинством членов с правом голоса.
Представьте набор реплик с тремя членами (с правом голоса). Предположим, что узел A является первичным, а узлы B+C — вторичными. Узел A выходит из строя, поэтому узлы B+C отправляются на выборы. Они по-прежнему составляют большинство (двое из трех). Выборы сначала определяются приоритетом. Если оба узла B и C имеют одинаковый приоритет, то побеждает тот, кто наиболее актуален в отношении отказавшего основного узла (oplog). Допустим, это узел B.
Как только узел A оживает, новых выборов не будет. Узел B остается главным, а узлы C+A теперь являются вторичными.
С другой стороны, если два узла выходят из строя, у вас нет большинства, поэтому набор реплик больше не может принимать обновления (применять записи) до тех пор, пока хотя бы один из двух отказавших серверов не станет активным (и не будет подключен к единственному серверу). выживший узел) снова.
Представьте теперь набор реплик с четырьмя участниками (с правом голоса). Допустим, узел A является первичным, а узлы B+C+D — вторичными. Узел A выходит из строя, поэтому узлы B+C+D отправляются на выборы. Они, конечно, составляют большинство (трое из четырех)
Однако, если два узла выходят из строя, у вас нет большинства (два из четырех), поэтому набор реплик снова находится в режиме только для чтения.
Вот почему рекомендуется нечетное число; Если вы теряете одного участника в наборе реплик из 3-х участников, это то же самое, что и потеря одного участника в наборе реплик из 4-х участников: вы по-прежнему получаете большинство кворума, и может быть избран новый первичный (RS все еще может избрать нового мастера путем большинство). С другой стороны, если вы потеряете двух участников в наборе реплик из 3-х участников или наборе реплик из 4-х участников (или n/2 участников в наборе реплик из n-членов) - опять же - последствия будут одинаковыми: ни один новый лидер не может быть избран. по выборам.
Итак, короче говоря, при наличии четного числа элементов в наборе реплик нет выигрыша в избыточности.
Подробнее см. внутреннюю информацию о выборах