Hazelcast系列(八):数据结构

系列文章

Hazelcast系列(一):初识hazelcast

Hazelcast系列(二):hazelcast集成(嵌入式)

Hazelcast系列(三):hazelcast集成(服务器/客户端)

Hazelcast系列(四):hazelcast管理中心

Hazelcast系列(五):Auto-Detection发现机制

Hazelcast系列(六):Multicast发现机制

Hazelcast系列(七):TCP-IP发现机制

Hazelcast系列(八):数据结构

Hazelcast系列(九):Map(一)加载和存储

Hazelcast系列(十):Map(二)监听器和拦截器

Hazelcast系列(十一):Map(三)备份、过期驱逐与内存格式

目录

        前言

        概览

        分区

        CAP

        参考

        总结


前言

前面已经对 Hazelcast 集成与各种发现机制进行了探讨,接下来,让我们来一起了解一下数据结构的特点与使用。

当前 hazelcast 版本:5.1.7

概览

数据结构描述

是否分区                                    

CAP
Map跨集群分区的键值对。地图提供了广泛的功能,例如 SQL 查询、WAN 复制和近缓存AP
Topic用于发布传递给多个订阅者的消息的分布式机制,也称为发布/订阅 (pub/sub) 消息传递模型AP
Replicated Map在集群中的每个成员之间复制的键值对AP
Queue一种用于在一个成员/客户中添加项目并将其从另一个成员/客户中删除的数据结构AP
Cache符合规范的 JCache 实现AP
Ringbuffer用于构建可靠的事件系统AP
Set分布式并发集合,不包含重复元素且不保留其顺序AP
List与 Set 类似,不同之处在于列表允许重复元素并保留其顺序AP
Multimap它是一种分布式数据结构,您可以在其中存储单个键的多个值AP
Reliable Topic与 Topic 类似,不同之处在于可靠主题由 Ringbuffer 数据结构备份AP
Cardinality Estimator实现 Flajolet 的 HyperLogLog 算法的数据结构AP
Fenced Lock提供对共享资源的独占访问的锁;一次只有一个线程可以获取锁,并且所有对共享资源的访问都需要首先获取锁CP
Semaphore一种数据结构,用于创建在执行并发活动时控制线程计数的许可CP
Atomic Longlong 用于处理可在分布式环境中原子更新的值的数据结构CP
Atomic Reference用于处理分布式环境中的引用的数据结构CP
Countdown Latch用于并发活动的分布式栅栏;它使线程能够等待其他线程完成其操作CP
Flake ID Generator用于生成集群范围内唯一标识符的数据结构AP
PN Counter每个 Hazelcast 实例都可以递增和递减计数器值,并且这些更新会传播到所有副本AP
Event 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

  • AP

  AP 数据结构更喜欢可用性而不是一致性。发生分区时,所有成员仍然可用,但某些成员可能返回比其他成员更旧的数据版本。解决分区后,成员通常会重新同步以修复任何不一致的情况:

        1.如果某个成员出现故障,其备份副本(保存相同的数据)会动态地将数据(包括数据的所有权和锁定)重新分配给剩余的活动成员。因此,不会有任何数据丢失。

        2.没有一个集群主节点可能会出现单点故障。集群中的每个成员都享有平等的权利和义务。没有任何一个成员是优越的

  • CP

    CP 数据结构以牺牲可用性为代价来提供一致性和分区容错性。当任意两个 CP 成员之间发生分区时,必须关闭不一致的 CP 成员,直到分区得到解决。

CP数据结构与AP数据结构有两个不同之处:

  • METADATA 每次获取 CP 数据结构对象时,都会在 CP 组上执行内部提交。因此,调用者应该缓存返回的对象。

  • destroy() 如果在 CP 数据结构对象上调用该方法,则该数据结构将在底层 CP 组中终止,并且在强制销毁 CP 组之前无法重新初始化。因此,在销毁 CP 数据结构之前,请确保您已完全使用完该数据结构。

参考

总结

不同的数据结构能在不同的业务中实现奇效,了解其特点,在 Hazelcast 的分布式环境中,选取数据结构最优解是非常有必要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值