Некоторые идеи о выборах лидера - PullRequest
2 голосов
/ 26 мая 2011

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

Теперь мой вопрос:

Могу ли я использовать хранилище значений ключей(желательно CA настраивается как riak), чтобы выполнить выборы лидера?Каковы возможные плюсы / минусы использования магазина KV для выборов лидера?

Спасибо!

РЕДАКТИРОВАТЬ: меня больше не интересует подход алгоритма хулигана.

1 Ответ

3 голосов
/ 26 мая 2011

Хранилище значений ключей, которое не гарантирует согласованность (например, Riak), является плохим способом сделать это, потому что вы могли бы получить два узла, которые оба думают (с разумом!), Что они новый лидер.Хранилище значений ключей, которое гарантирует согласованность, не гарантирует доступность в случае возникновения проблем, а доступность будет скомпрометирована именно тогда, когда у вас возникнут проблемы, которые могут привести к потере узлов.Я хотел бы предложить сделать это для тысяч узлов, чтобы перейти от прямого однорангового соглашения с тысячами узлов к иерархическому расположению.Так что есть мастер и несколько групп.Каждый входящий узел назначается группе, которая присваивает его подгруппе, которая присваивает его подгруппе, пока вы не окажетесь в достаточно малой одноранговой группе.Тогда главные выборы проводятся только между лидерами групп, и победитель получает повышение за лидерство в этой группе.Если лидер группы уходит (возможно, из-за продвижения по службе), мастерские выборы между лидерами ее подгрупп избирают нового лидера.И так далее.

Если группа сверстников становится слишком большой, скажем, 26, то ее хозяин случайным образом разделяет ее на 5 небольших групп по 5 пиров в каждой со случайно назначенными лидерами.Аналогичным образом, если группа сверстников становится слишком маленькой, скажем, 3, она может обратиться к своему лидеру с просьбой о слиянии с кем-то еще.Если лидер замечает, что у него слишком мало подписчиков, скажем, 3, то он может сказать одному из них, чтобы он превратил свои подгруппы в полные группы и присоединился к одной из этих групп.Вы можете играть с этими числами, в зависимости от того, сколько избыточности вам нужно.

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

...