如何动态指定Aeron Cluster leader节点?
How to dynamically designate and Aeron Cluster leader node?
我想指示 Aeron 集群中的任何节点成为领导者,无需选举。以前的领导者自动成为追随者,从不试图承担领导责任(除非有外部指示)。
我查看了 Cluster/Role
、ClusterTool
和 AeronCluster
API,但似乎没有任何帮助。我还检查了 AppointedLeaderTest
,它归结为最初使用 ConsesusModule.Context.appointedLeaderId
指定领导者,但之后无法动态更改它?
如何做到这一点?
不可能像您建议的那样运行 Aeron 集群。 (艾伦 1.27.0)
Aeron 集群基于 RAFT consensus algorithm,它定义了选举协议,规定在那个时间点拥有最先进日志的节点将成为领导者。
分配 appointedLeaderId 可防止未指定的节点在选举中提议自己成为候选人。
您可以通过使用动态成员资格来实现您想要的某些功能。
- 你可以启动1.你想成为leader的节点的集群,等待它成为leader。
- 一个接一个地动态添加节点,直到您拥有所需大小的集群。
或者给定一个静态集群,稍微更蛮力的方法是:
- 启动三节点集群。
- 如果您希望领导者成为领导者,请继续。
- 重新启动领导者。转到 2.
注意:这些解决方案中的任何一个的 complexity/computational 费用都可能超过能够指定一个节点作为领导者的任何好处。
我想指示 Aeron 集群中的任何节点成为领导者,无需选举。以前的领导者自动成为追随者,从不试图承担领导责任(除非有外部指示)。
我查看了 Cluster/Role
、ClusterTool
和 AeronCluster
API,但似乎没有任何帮助。我还检查了 AppointedLeaderTest
,它归结为最初使用 ConsesusModule.Context.appointedLeaderId
指定领导者,但之后无法动态更改它?
如何做到这一点?
不可能像您建议的那样运行 Aeron 集群。 (艾伦 1.27.0)
Aeron 集群基于 RAFT consensus algorithm,它定义了选举协议,规定在那个时间点拥有最先进日志的节点将成为领导者。
分配 appointedLeaderId 可防止未指定的节点在选举中提议自己成为候选人。
您可以通过使用动态成员资格来实现您想要的某些功能。
- 你可以启动1.你想成为leader的节点的集群,等待它成为leader。
- 一个接一个地动态添加节点,直到您拥有所需大小的集群。
或者给定一个静态集群,稍微更蛮力的方法是:
- 启动三节点集群。
- 如果您希望领导者成为领导者,请继续。
- 重新启动领导者。转到 2.
注意:这些解决方案中的任何一个的 complexity/computational 费用都可能超过能够指定一个节点作为领导者的任何好处。