Hazelcast - 客户端模式 - 群集故障后如何恢复?

时间:2017-11-30 11:13:41

标签: java distributed-computing hazelcast hazelcast-imap

我们在产品中使用了hazelcast分布式锁定和缓存功能。使用分布式锁定对我们的业务逻辑非常重要。

目前我们正在使用嵌入模式(每个应用程序节点也是一个hazelcast集群成员)。我们将切换到客户端 - 服务器模式。

我们注意到客户端服务器的问题是,一旦集群关闭一段时间,经过多次尝试,客户端就会被销毁,并且从该客户端检索到的任何对象(映射,集合等)都不再存在可用。 即使在Hazelcast群集恢复后,客户端实例也无法恢复(我们收到HazelcastInstanceNotActiveException)

我知道此问题已多次解决,最终成为功能请求:

issue1

issue2

issue3

我的问题:恢复客户的策略应该是什么?目前,我们计划在客户端流程中排队任务,如下所示。根据条件,它将尝试重新启动客户端实例... 我们将通过clientInstance.getLifecycleService()。isRunning()检查来检查客户端是否正在运行。

这是任务代码:

Observables

这种方法适合吗?我也尝试过听LifeCycle活动,但无法通过活动让它发挥作用。

问候

2 个答案:

答案 0 :(得分:1)

在Hazelcast 3.9中,我们改变了连接和重新连接在客户端中的工作方式。您可以在文档中了解新行为:http://docs.hazelcast.org/docs/3.9.1/manual/html-single/index.html#configuring-client-connection-strategy

我希望这会有所帮助。

答案 1 :(得分:0)

在Hazelcast 3.10中,您可以将连接尝试次数从2(默认情况下)增加到最大值:

ClientConfig clientConfig = new ClientConfig();    。clientConfig.getNetworkConfig()setConnectionAttemptLimit(Integer.MAX_VALUE的);