如何在旧的 jgroups 版本中更改 JGroups 集群协调器

How to change JGroups cluster coordinator in older jgroups version

我在分布式 Java 应用程序中使用旧版本的 JGroups (2.12.2)。

有时我需要让当前的集群协调器节点不再是集群协调器。这样一个不同的(随机的,但不是当前的)节点接管。

问题 1:正确的做法是什么?

目前我只是断开与集群的连接并在几秒钟后重新连接:

channel.disconnect();
...
channel.connect(clusterName);

问题 2:我应该等多久才能连接回来?如果我立即重新连接,这是否仍然有效(另一个节点是否成为协调器)?

首先,2.12.2太旧了,建议升级到较新的版本!

问题 1:是的,这确实有效。另一种方法是使用 [1] 中描述的方法。您还可以通过编程方式确定下一个视图;在 [1] 中,旧坐标移动到列表末尾,但视图可以由用户代码确定。查看 JGroups 手册以了解自定义视图生成。

问题 2:disconnect() 和 connect() 之间不需要睡眠时间。

[1] https://github.com/belaban/JGroups/wiki/Changing-the-coordinator-of-a-cluster