我在分布式Java应用程序中使用旧版本的JGroups(2.12.2)。
在某些时候,我需要让当前的集群协调器节点不再是集群协调器。因此,一个不同的(随机的,但不是当前的)节点接管。
问题1:这样做的正确方法是什么?
目前我只是断开与群集的连接并在几秒钟后重新连接:
channel.disconnect();
...
channel.connect(clusterName);
问题2:在连接之前我应该等多久?如果我立即重新连接,这仍然有效(另一个节点是否成为协调员)?
答案 0 :(得分:0)
首先,2.12.2太旧了,我建议升级到更新的版本!
问题1:是的,这肯定有效。另一种方法是使用[1]中描述的方法。您还可以以编程方式确定下一个视图;在[1]中,旧的coord移动到列表的末尾,但视图可以由用户代码确定。检查JGroups手册以获取自定义视图。
问题2:disconnect()和connect()之间不需要休眠时间。
[1] https://github.com/belaban/JGroups/wiki/Changing-the-coordinator-of-a-cluster