Кворум против большинства в Zookeper - PullRequest
2 голосов
/ 19 января 2020

Я много читал о Zookeeper и одну вещь, которую я еще не понял, это соглашение об именах. Я не смог найти что-либо об этом в документации, и все вопросы stackoverflow и другие ресурсы используют определение кворума по-разному. Итак, мой вопрос: что такое кворум?

  1. Это количество серверов, которое нам нужно для достижения ансамбля исправного ? Это: Q = 2N + 1, где N - количество узлов, которые могли бы go отключиться без остановки всего сервиса? (номер отказа, который мы готовы поддержать). В этом случае исходное общее количество серверов ансамбля - это то, что мы называем кворумом, поэтому, если мы хотим, чтобы наша система поддерживала не более 2 неисправных узлов, Q = 2 * 2 + 1 = 5, поэтому кворум равен к числу серверов?
  2. Кворум - это большинство серверов, которые должны согласиться на определенную операцию для продвижения вперед. Например, если T - это общее количество серверов, то кворум также является мажоритарным числом, задаваемым (T + 1) /2.

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

1 Ответ

1 голос
/ 19 января 2020

Кажется, что люди использовали его без разбора, но оба пункта взаимоисключающие. Во-первых, это количество серверов, чтобы создать работоспособный ансамбль, устойчивый и надежный для получения кворума, даже если какой-то узел выходит из строя, а другие утверждают, что кворум эквивалентен этому числу. Кроме того, определение кворума таково:

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

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

Атоми c трансляция и выборы лидера используют понятие кворума, чтобы гарантировать согласованное представление о системе. По умолчанию ZooKeeper использует мажоритарных кворумов , что означает, что для каждого голосования, которое происходит по одному из этих протоколов, требуется большинство для голосования. Одним из примеров является подтверждение предложения лидера: лидер может зафиксировать только после того, как он получит подтверждение от кворума серверов.

Кворумы также могут быть настроены иерархическим способом или с весами, настроенными для событий, на разных серверах.

Заключение:

  1. Число серверов для настройки надежного и отказоустойчивого ансамбля - это показатель работоспособности c, вы можете назвать его как хотите, но это не кворум.
  2. Кворум - это минимальное количество серверов, которые должны голосовать или отправлять подтверждения при каждом решении в ансамбле, которое по умолчанию равно (T+1)/2, где T обозначает общее количество серверов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...