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