如何动态指定Aeron Cluster leader节点?

How to dynamically designate and Aeron Cluster leader node?

我想指示 Aeron 集群中的任何节点成为领导者,无需选举。以前的领导者自动成为追随者,从不试图承担领导责任(除非有外部指示)。

我查看了 Cluster/RoleClusterToolAeronCluster API,但似乎没有任何帮助。我还检查了 AppointedLeaderTest,它归结为最初使用 ConsesusModule.Context.appointedLeaderId 指定领导者,但之后无法动态更改它?

如何做到这一点?

不可能像您建议的那样运行 Aeron 集群。 (艾伦 1.27.0)

Aeron 集群基于 RAFT consensus algorithm,它定义了选举协议,规定在那个时间点拥有最先进日志的节点将成为领导者。

分配 appointedLeaderId 可防止未指定的节点在选举中提议自己成为候选人。

您可以通过使用动态成员资格来实现您想要的某些功能。

  • 你可以启动1.你想成为leader的节点的集群,等待它成为leader。
  • 一个接一个地动态添加节点,直到您拥有所需大小的集群。

或者给定一个静态集群,稍微更蛮力的方法是:

  1. 启动三节点集群。
  2. 如果您希望领导者成为领导者,请继续。
  3. 重新启动领导者。转到 2.

注意:这些解决方案中的任何一个的 complexity/computational 费用都可能超过能够指定一个节点作为领导者的任何好处。