Автоматический выбор лидера в кластере узлов
Каковы наилучшие методы / алгоритмы, позволяющие выбрать ведущий узел в кластере узлов, зная, что узлы в любой момент появляются и исчезают? Если реализации доступны в Java, это плюс.
3 ответа
Я реализовал алгоритм Paxos раньше в Java. Это очень полезно и довольно просто. (Потребовалось около 16 часов, чтобы собрать демо-версию с использованием потоков для имитации серверов. Тогда я был намного хуже в многопоточности!)
Это не поможет вам точно выбрать лидера... но он позволит различным узлам договориться о лидере. Таким образом, у вас есть этот алгоритм выбора лидера, но поскольку каждый узел будет выбирать свой собственный узел для руководства, вы можете найти "гражданскую войну" среди ваших узлов. Алгоритм Paxos позволяет вам сказать, какой выбранный лидер является настоящим лидером.
Некоторые варианты:
- Hazelcast - выборы лидера кластера с помощью Spring Integration и Hazelcast.
- JGroups - выборы лидера кластера с JGroups
- Apache ZooKeeper - выборы лидера кластера с ZooKeeper.
Я лично реализовал это с Hazelcast и JGroups и говорю, что оба были довольно просты и просты. Для нового проекта я бы пошел с Hazelcast.