2

当某些节点突然死亡时,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. 我们不会将数据持久化到存储中。
4

2 回答 2

2

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

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

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

于 2013-09-27T03:16:06.543 回答
0

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

于 2013-09-26T16:03:50.050 回答