【问题标题】:Distributed Transactional Memory with Zookeeper / Hadoop?Zookeeper / Hadoop的分布式事务内存?
【发布时间】:2015-02-05 18:04:04
【问题描述】:

我正在寻找除了大内存和 hazelcast 之外的 Java 解决方案。由于我们使用的是 Hadoop/Spark,我们应该可以访问 Zookeeper。

所以我只想知道是否有满足我们需求的解决方案,或者我们是否需要自己构建一些东西。

我需要的是可靠的内存、复制和同步对象。对于操作,我希望有锁支持和跨越对象的原子操作。

我还需要对对象引用和 List/Set/Map 的支持。

其余的我们可以自己建立。

这个想法只是让自组织网络根据环境进行自我配置,最好通过复制的同步对象来完成,并且可以收听。

【问题讨论】:

  • 那么问题是什么?你为什么不想使用 hazelcast?
  • Hazelcast 太过分了,我不相信他们已经解决了脑裂问题。我需要一个解决方案,如果发生这种情况,服务器会朝自己的头部开枪,而我将无法通过 hazelcast 游戏来做到这一点。
  • 您希望看到什么样的脑裂问题解决方案?
  • 一个法定人数,一旦一个节点离开,节点就会被计算在内,如果它达到某个最小值 n/2-1 -> 每个节点都会停止工作。因此可以保证,如果发生不可想象的事情(n+1 死亡),系统就会停止工作。
  • 您只需要一半的系统位于同一个数据中心,就会导致仲裁失败。如果您想要弹性,您还需要一个法定人数的数据中心。

标签: java memory transactions distributed


【解决方案1】:

Hazelcast 有一个脑裂检测器,当脑裂发生时,hazelcast 将继续接受更新,当集群合并回来时,它将使您能够合并您喜欢的更新。

我们正在实施一个集群仲裁功能,有望在下一个次要 (3.5) 版本中提供。使用集群仲裁,您可以定义一个最小阈值或您自己的自定义函数来决定集群是否应该在分区网络中继续运行。

例如,如果您定义仲裁大小为 3,如果集群中的成员少于 3 个,则集群将停止运行。

目前 hazelcast 的行为类似于 AP 解决方案,但当集群仲裁可用时,您可以调整 hazelcast 以使其行为类似于 CP 解决方案。

【讨论】:

  • 谢谢。不知道 3.5 版本什么时候上市?
  • 计划5月发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多