【问题标题】:hazelcast in-memory map lost data when some nodes suddenly died当某些节点突然死亡时,hazelcast 内存映射丢失数据
【发布时间】:2013-09-28 00:20:00
【问题描述】:

当一些节点突然死亡时,hazelcast 内存映射丢失了数据。

例如,在一个 3 节点集群中,我们有一个共享映射,考虑到映射有 3 个条目(A,B,C),默认备份 = 1,这 3 个条目平均分配到节点,例如它可能是:

Entry A: node 1, node 2
Entry B: node 2, node 3
Entry C: node 1, node 3.

当node2和node3在node1完成重新分区之前突然同时死掉,那么入口B就永远丢失了。

解决这个问题的任何想法:

  1. 我们尝试将映射备份计数从 1 更改为 3,它适用于 3 节点以上的情况,但在某些情况下,在更高数量的集群中仍然可能存在问题。
  2. 有没有办法在每个节点上强制执行此映射备份,例如,将备份计数设置为节点号?
  3. 我们不会将数据持久化到存储中。

【问题讨论】:

  • 如果超过 <backup> 节点在短时间内失败,那么你就完蛋了 - 你需要:给他们时间重新平衡,增加备份计数,或者使用你可以处理的数据从持久存储重新创建。

标签: java cluster-computing hazelcast


【解决方案1】:

在 Hazelcast 3 中,您可以配置同步和异步备份的数量。

但是如果你想拥有高可用性,你需要增加更多的机器;添加的越多,可用性就越高。

我们有卸载到数据库的功能,例如使用 MapStore 和 MapLoader 接口。我们(还)没有开箱即用的磁盘持久性。

【讨论】:

    【解决方案2】:

    从 2.1 开始,他们的分布式队列支持自定义备份计数,并且队列由分布式映射备份。不确定最新版本是否仍支持它。请看这里:http://www.hazelcast.com/docs/2.1/manual/single_html/#Queue

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多