Hazelcast系列(八):数据结构
- 软件开发
- 2025-08-17 10:51:01

系列文章
Hazelcast系列(一):初识hazelcast
Hazelcast系列(二):hazelcast集成(嵌入式)
Hazelcast系列(三):hazelcast集成(服务器/客户端)
Hazelcast系列(四):hazelcast管理中心
Hazelcast系列(五):Auto-Detection发现机制
Hazelcast系列(六):Multicast发现机制
Hazelcast系列(七):TCP-IP发现机制
Hazelcast系列(八):数据结构
目录前言
概览
分区
CAP
参考
总结
前言
前面已经对 Hazelcast 集成与各种发现机制进行了探讨,接下来,让我们来一起了解一下数据结构的特点与使用。
当前 hazelcast 版本:5.1.7
概览 数据结构描述是否分区
CAPMap跨集群分区的键值对。地图提供了广泛的功能,例如 SQL 查询、WAN 复制和近缓存是APTopic用于发布传递给多个订阅者的消息的分布式机制,也称为发布/订阅 (pub/sub) 消息传递模型否APReplicated Map在集群中的每个成员之间复制的键值对否APQueue一种用于在一个成员/客户中添加项目并将其从另一个成员/客户中删除的数据结构否APCache符合规范的 JCache 实现是APRingbuffer用于构建可靠的事件系统否APSet分布式并发集合,不包含重复元素且不保留其顺序否APList与 Set 类似,不同之处在于列表允许重复元素并保留其顺序否APMultimap它是一种分布式数据结构,您可以在其中存储单个键的多个值是APReliable Topic与 Topic 类似,不同之处在于可靠主题由 Ringbuffer 数据结构备份否APCardinality Estimator实现 Flajolet 的 HyperLogLog 算法的数据结构否APFenced Lock提供对共享资源的独占访问的锁;一次只有一个线程可以获取锁,并且所有对共享资源的访问都需要首先获取锁否CPSemaphore一种数据结构,用于创建在执行并发活动时控制线程计数的许可否CPAtomic Longlong 用于处理可在分布式环境中原子更新的值的数据结构否CPAtomic Reference用于处理分布式环境中的引用的数据结构否CPCountdown Latch用于并发活动的分布式栅栏;它使线程能够等待其他线程完成其操作否CPFlake ID Generator用于生成集群范围内唯一标识符的数据结构否APPN Counter每个 Hazelcast 实例都可以递增和递减计数器值,并且这些更新会传播到所有副本否APEvent Journal用于存储映射或缓存数据结构上的突变操作的历史记录是AP 分区说明
分区:每个分区存储整个数据结构的一部分。
非分区:单个分区存储整个数据结构
控制分区
默认情况下,队列具有不同的名称,因此它们将被放置到不同的分区中:
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); IQueue q1 = hazelcastInstance.getQueue("q1"); IQueue q2 = hazelcastInstance.getQueue("q2");如果要将这两个放入同一分区,请使用以下 @ 符号:
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); IQueue q1 = hazelcastInstance.getQueue("q1@foo"); IQueue q2 = hazelcastInstance.getQueue("q2@foo");现在,这两个队列将被放入分区键为 的同一分区中 foo 。
CAP APAP 数据结构更喜欢可用性而不是一致性。发生分区时,所有成员仍然可用,但某些成员可能返回比其他成员更旧的数据版本。解决分区后,成员通常会重新同步以修复任何不一致的情况:
1.如果某个成员出现故障,其备份副本(保存相同的数据)会动态地将数据(包括数据的所有权和锁定)重新分配给剩余的活动成员。因此,不会有任何数据丢失。
2.没有一个集群主节点可能会出现单点故障。集群中的每个成员都享有平等的权利和义务。没有任何一个成员是优越的
CPCP 数据结构以牺牲可用性为代价来提供一致性和分区容错性。当任意两个 CP 成员之间发生分区时,必须关闭不一致的 CP 成员,直到分区得到解决。
CP数据结构与AP数据结构有两个不同之处:
METADATA 每次获取 CP 数据结构对象时,都会在 CP 组上执行内部提交。因此,调用者应该缓存返回的对象。
destroy() 如果在 CP 数据结构对象上调用该方法,则该数据结构将在底层 CP 组中终止,并且在强制销毁 CP 组之前无法重新初始化。因此,在销毁 CP 数据结构之前,请确保您已完全使用完该数据结构。
参考 Distributed Data Structures 总结不同的数据结构能在不同的业务中实现奇效,了解其特点,在 Hazelcast 的分布式环境中,选取数据结构最优解是非常有必要的。
Hazelcast系列(八):数据结构由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Hazelcast系列(八):数据结构”
上一篇
Vue整合