1

我们目前正在准备 hazelcast 在接下来的几周内上线。还有一个更大的问题,它困扰着我们的 OPs 部门,如果我们无法解决它,它可能会成为阻碍。

由于我们正在维护一个高可用性支付应用程序,因此我们必须在集群不可用的情况下生存下来。原因可能是:

  1. 有人弄乱了 hazelcast 配置,集群上的地图增加,直到我们有 OOM(在测试系统上有这个)。
  2. 网卡/硬件存在一些问题,会暂时中断与集群的连接
  3. OP 人员重新配置了防火墙并意外阻止了一些必要的端口,无论如何。
  4. 不管怎么说

我花了一些时间寻找好的现有解决方案,但目前唯一的解决方案是增加备份服务器的数量,这当然不能解决问题。

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

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

4

1 回答 1

2

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

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

于 2015-01-09T13:57:18.407 回答