Hazelcast-客户模式 - 聚类失败后如何恢复



我们在产品中使用Hazelcast分布式锁定和缓存功能。分布式锁定的使用对于我们的业务逻辑至关重要。

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

我们已经注意到客户端的问题 - 服务器是,一旦群集停止了一段时间,在销毁了几次尝试客户端,并且从该客户端检索到的任何对象(地图,集合等)不再是可用。此外,即使在Hazelcast集群恢复后,客户端实例也无法恢复(我们接收HazelCastInstancenotactiveException)

我知道这个问题已经被多次解决,最终作为功能请求:

问题1

第2期

第3期

我的问题:恢复客户的策略应该是什么?目前,我们计划在下面的客户过程中加入任务。基于条件,它将尝试重新启动客户端实例...我们将通过clientinstance.getLifeCycleService()。isrunning()检查。

这是任务代码:

private class ClientModeHazelcastInstanceReconnectorTask implements Runnable {
    @Override
    public void run() {
        try {
            HazelCastService hazelcastService = HazelCastService.getInstance();
            HazelcastInstance clientInstance = hazelcastService.getHazelcastInstance();
            boolean running = clientInstance.getLifecycleService().isRunning();
            if (!running) {
                logger.info("Current clientInstance is NOT running. Trying to start hazelcastInstance from ClientModeHazelcastInstanceReconnectorTask...");
                hazelcastService.startHazelcastInstance(HazelcastOperationMode.CLIENT);
            }
        } catch (Exception ex) {
            logger.error("Error occured in ClientModeHazelcastInstanceReconnectorTask !!!", ex);
        }
    }
}

这种方法合适吗?我还试图聆听生命周期事件,但无法通过事件使其正常工作。

问候

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

我希望这会有所帮助。

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

clientconfig clientconfig = new ClientConfig(); clientconfig.getNetworkConfig()。setConnectionAttementLimit(integer.max_value);

最新更新