Как динамически назначить и узел-лидер Aeron Cluster? - PullRequest
0 голосов
/ 11 апреля 2020

Я бы хотел, чтобы любой узел в кластере Аэрон стал лидером, без выборов. Предыдущий лидер автоматически становится последователем, никогда не пытаясь взять на себя лидерство (если не направлено извне).

Я посмотрел на API Cluster/Role, ClusterTool и AeronCluster, и ничего не показалось мне полезным. Я также проверил AppointedLeaderTest, и все сводится к тому, чтобы изначально указать лидера с ConsesusModule.Context.appointedLeaderId, но нет способа изменить его впоследствии динамически?

Как это сделать?

1 Ответ

2 голосов
/ 16 апреля 2020

Невозможно запустить кластер Aeron, как вы предлагаете. (Aeron 1.27.0)

Кластер Aeron основан на согласованном алгоритме RAFT , он определяет протокол выборов и определяет, что узел, который имеет самый продвинутый журнал на тот момент времени Лидер ,

  • Вы можете запустить кластер из 1. Узел, которым вы хотите стать лидером, и ждать, пока он станет лидером.
  • Добавлять узлы динамически по одному, пока у вас не появится кластер нужного размера.

Или с учетом кластера stati c, чуть более грубый подход будет следующим:

  1. Запуск кластера из трех узлов.
  2. Если желаемый лидер становится лидером, то GO TO END.
  3. Перезапустите лидера. GO TO 2.

Примечание: сложность / вычислительные затраты любого из этих решений, вероятно, перевесят любую выгоду от возможности назначить узел лидером.

...