1

我想指示 Aeron 集群中的任何节点成为领导者,没有选举。前任领导者自动成为追随者,从不尝试担任领导职务(除非受到外部指示)。

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

这个怎么做?

4

1 回答 1

2

无法按照您的建议运行 Aeron 集群。(亚伦 1.27.0)

Aeron 集群基于RAFT 共识算法,它定义了选举协议,并规定在该时间点拥有最先进日志的节点将成为领导者。

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

通过使用动态成员资格,您可能能够实现一些您想要的。

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

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

  1. 启动一个三节点集群。
  2. 如果您希望的领导者成为领导者,则转到结束。
  3. 重新启动领导者。转到 2。

注意:这两种解决方案的复杂性/计算成本都可能超过能够指定节点作为领导者的任何好处。

于 2020-04-15T22:26:23.787 回答