如何确保Java客户端继续"工作"以防整个hazelcast集群关闭

时间:2015-01-09 09:22:49

标签: java hibernate hazelcast failover failovercluster

我们目前正准备在接下来的几周内投入使用。还有一个更大的问题,那就是我们的OP部门会遇到麻烦,如果我们无法修复它,可能会成为一个可能的显示器。

由于我们维护的是高可用性支付应用程序,因此如果群集不可用,我们必须生存。原因可能是:

  1. 有人弄乱了hazelcast配置,群集上的地图一直在增加,直到我们有OOM(在测试系统上有这个)。
  2. 网卡/硬件存在一些问题,暂时断开与群集的连接
  3. OPs家伙重新配置了防火墙,并意外地阻止了一些必要的端口,无论如何。
  4. 无论如何
  5. 我花了一些时间寻找现有的解决方案,但到目前为止唯一的解决方案是增加备份服务器的数量,这当然无法解决问题。

    在我当前的测试期间,应用程序完全停止工作,因为在某些重试后,客户端断开与群集的连接,并且休眠的第二级缓存不再起作用。由于我们在整个生态系统中使用hazelcast,因此几乎可以立即杀死40个Java客户端。

    因此,我想知道当群集关闭时,我们如何才能实现应用程序仍以较慢的方式工作。我们当前的方法是切换到ehcache本地缓存,但我认为应该有针对该问题的淡化解决方案?

1 个答案:

答案 0 :(得分:2)

如果我是你,我会使用LocalSessionFactoryBean并将cacheRegionFactory设置为Spring Bean,如果Hazelcast服务器关闭,可以将呼叫委托给Hazelcast或NoCachingRegionFactory

这是可取的,因为Hibernate假定Cache实现始终可用,因此您需要提供自己的CacheRegion代理,以便在运行时决定缓存区域路由。