Автоматический выбор лидера в кластере узлов

Каковы наилучшие методы / алгоритмы, позволяющие выбрать ведущий узел в кластере узлов, зная, что узлы в любой момент появляются и исчезают? Если реализации доступны в Java, это плюс.

3 ответа

Решение

Я реализовал алгоритм Paxos раньше в Java. Это очень полезно и довольно просто. (Потребовалось около 16 часов, чтобы собрать демо-версию с использованием потоков для имитации серверов. Тогда я был намного хуже в многопоточности!)

Это не поможет вам точно выбрать лидера... но он позволит различным узлам договориться о лидере. Таким образом, у вас есть этот алгоритм выбора лидера, но поскольку каждый узел будет выбирать свой собственный узел для руководства, вы можете найти "гражданскую войну" среди ваших узлов. Алгоритм Paxos позволяет вам сказать, какой выбранный лидер является настоящим лидером.

http://en.wikipedia.org/wiki/Paxos_%28computer_science%29

Вы можете просмотреть источники JGroups. (ключевое слово: "координатор", ознакомьтесь с главой 7 в руководстве по jGroups)

Некоторые варианты:

Я лично реализовал это с Hazelcast и JGroups и говорю, что оба были довольно просты и просты. Для нового проекта я бы пошел с Hazelcast.

Другие вопросы по тегам