Задать вопрос

Как работают алгоритмы выбора лидера в распределенных системах?

Здравствуйте, ради интереса решила поизучать тему распределенных, высоконагруженных систем, прочитала пару умных книг, в которых говорилось о репликации и алгоритмах выбора нового лидера (Leader Election) в случае отказа текущего. В частности я узнала об алгоритме Bully, Modified Bully и Ring алгоритмах.

Сразу появилась пара вопросов:

- Абсолютно во всех этих алгоритмах упоминается такое понятие как приоритет. У какого узла окажется выше приоритет, тот и назначается новым лидером. Этот приоритет - это случайное число? Или же он обычно зависит от каких-либо параметров узла, типа количество доступной памяти, занятости диска и тд.
- Если приоритет - это случайное число, зачем тогда вообще нужно опрашивать каждый узел и создавать такую длинную цепочку Election запросов? Можно же просто сделать так - какой-нибудь узел заметил, что текущий лидер отвалился, и он сразу же отправляет всем остальным узлам напрямую, либо на какую-то шину, что теперь он - лидер. Это же по факту будет точно такой же случайный узел, как и в случае с приоритетами, только без огромной цепочки запросов.

Modified-Bully-Algorithm.png
  • Вопрос задан
  • 877 просмотров
Подписаться 3 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
saboteur_kiev
@saboteur_kiev
software engineer
Можно же просто сделать так - какой-нибудь узел заметил, что текущий лидер отвалился, и он сразу же отправляет всем остальным узлам напрямую, либо на какую-то шину, что теперь он - лидер.

Если текущий лидер отваливается, почему вы думаете, что все остальные узлы узнают об этом по очереди?
Узнают одновременно. И одновременно пошлют всем узлам, что они новые лидеры, и получится бардак.
Именно поэтому и проводится выбор - либо генерируется случайное число каждым узлом, и выбирается среди всех тот, у кого число самое большое. Либо есть заранее заданные приоритеты выбора лидеров, основанные или на конфигах, или на мощностях, как уж создателю программы показалось нужным.
Опять же, в алгоритм можно добавить настройки, чтобы администратор мог указать какие машины не должны участвовать в выборе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@deliro
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
для капитанов военных кораблей есть такая штукенция типа арифмометра: при торпедной атаке повернуть на столько то градусов - градус штукенция и выбирает

чтобы капитаны не умничали против строгой математики уже за них просчитанной
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 ₽
ITK academy Нижний Новгород
от 75 000 до 125 000 ₽
JustBusiness Санкт-Петербург
от 130 000 до 150 000 ₽