假设一个组织有两个数据中心(为简单起见命名为“A”和“B”),每个数据中心运行多个节点,并且所有这些节点上都有一个Hazelcast集群。假设此集群中有一个分布式地图,其配置为备份计数为1。
是否有办法配置Hazelcast分布式地图,以便将数据中心a中的节点备份到数据中心B中的节点上,反之亦然?这意味着如果丢失单个数据中心,地图数据(和备份)不会丢失?
您需要的是分区分组。有关详细信息,请参阅文档。您可以做的最简单的事情是在Hazelcast配置中包含此代码段:
xml prettyprint-override"><partition-group enabled="true" group-type="CUSTOM">
<member-group>
<interface>10.10.1.*</interface> <!-- network in data centre A -->
</member-group>
<member-group>
<interface>10.10.2.*</interface> <!-- network in data centre B -->
</member-group
</partition-group>
另一种选择是在每个数据中心创建自己的集群并通过WAN复制将它们连接起来。这将减少数据中心内的延迟,但它可能会产生冲突的更新,然后由您的MergePolicy来处理它。
假设我有一个Hazelcast映射的以下配置 群集中的节点数:1 映射配置: 最大大小:100MB 同步备份计数:1 异步备份计数:0
我在我的API(如MemTable)中使用Hazelcast作为嵌入式分布式映射,在将其发送到另一个存储之前积累条目。我的问题是: 我可以使用为IMap提供的LocalMapStats对象控制堆大小吗? 我正在阅读关于该对象的信息,我认为getHeapSize()或getOwnedEntryMemoryCost()加上getBackupEntryMemoryCost()等方法可能会给我提供内存成本
下面是我们在生产中遇到的问题的描述。请注意,我无法在测试或本地环境中再现该问题,因此无法向您提供测试代码。 我们有一个hazelcast集群,有两个成员M1、M2和三个客户端C1、C2、C3。Hazelcast版本为3.9。 客户端使用IMap。tryLock()方法,超时10秒。获得锁后,将执行关键和长时间运行的操作,最后使用IMap释放锁。unlock()方法。 生产中出现的问题如下: 在某个
我已经将Hazelcast缓存配置为Spring Boot应用程序中的分布式缓存。 我想要为同一实例提供本地缓存,其中很少缓存不应共享。 如何在应用中一起做本地和分布式缓存?
假设4个节点拆分在2个数据中心(DC1-1、DC1-2、DC2-1、DC2-2)上。 使用分区组和默认备份计数1,留档和其他问题/文章非常清楚数据是如何分布的,假设分布良好的数据-每个节点25%为主数据,DC1-1/DC1-2中的所有主数据都将备份在DC2-1/DC2-2上,反之亦然。 如果我们将备份计数增加到2,则不清楚在相同的情况下预期的行为是什么。假设条目#1当前为DC1-1上的主条目。备份
几个月前我们开始使用Hazelcast。我们最近开始在生产环境中测试它,现在大约每周看到一次这个异常: 2020-02-11 12:10:00,084upport.invokeNoDataMemberInClusterException:无法找到调用的目标!分区所有者为空,但无法分配分区,因为集群中的所有节点都是精简成员。upport.java:467upport.java:406com.haze