Hazelcast系列(八):数据结构

系列文章

Hazelcast系列(一):初识hazelcast

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

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

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

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

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

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

Hazelcast系列(八):数据结构

目录

        前言

        概览

        分区

        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 Long long 用于处理可在分布式环境中原子更新的值的数据结构 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 数据结构之前,请确保您已完全使用完该数据结构。

参考

  • Distributed Data Structures

总结

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

你可能感兴趣的:(数据库,Hazelcast,hazelcast,hazelcast数据结构)