java - 如何确保 java 客户端在整个 hazelcast 集群关闭的情况下继续运行 "working"

标签 java hibernate hazelcast failover failovercluster

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

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

  1. 有人弄乱了 hazelcast 配置,集群上的映射不断增加,直到出现 OOM(测试系统上有此情况)。
  2. 网卡/硬件存在一些问题,导致与集群的连接暂时中断
  3. OP 人员重新配置了防火墙,并意外阻止了一些必要的端口。
  4. 随便吧

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

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

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

最佳答案

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

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

关于java - 如何确保 java 客户端在整个 hazelcast 集群关闭的情况下继续运行 "working",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857303/

相关文章:

java - 为我的 zip 创建文件系统时未找到提供程序异常?

java - Java 中的内存问题是否会导致 BufferedReader 过早返回 null?

java - 合并时键 PRIMARY 的 hibernate 重复条目

multithreading - Hibernate 与 akka Actor 一起工作吗?

java - 多次调用 hazelcast 中的 Load All

java - Hazelcast IMDG 字符串到 HazelcastJsonValue 问题

java - Stardog 数据库创建给出文件未找到异常

java - Android studio firebase 集成出现错误

hibernate - Grails (Hibernate) java.time.ZoneId 到数据库的映射

java - 如何创建自己的自定义谓词来比较 hazelcast 中的复合 id