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 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 数据结构之前,请确保您已完全使用完该数据结构。

参考

  • Distributed Data Structures

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea集成Docker

1、前言 上一节中,我们介绍了Dockerfile的方式构建自己的镜像。但是在实际开发过程中,一般都会和开发工具直接集成,如Idea。今天就介绍下idea和Docker如何集成。 2、开启docker远程 要集成之前,需要我们本机能够访问docker服务…

在liunx下读取串口的数据

1. 设置串口参数 首先是通过stty工具设置串口参数: sudo stty -F /dev/ttyUSB0 比特率 cs8 -cstopb如:sudo stty -F /dev/ttyUSB0 115200 cs8 -cstopb. 注意: 需要注意的是这里需要sudo权限; 2. 读取串口数据 然后读取串口的…

vue3 组件化的优势

Vue3是一款前端框架,其最大的特点是支持组件化开发。组件化开发可以将页面拆分成多个模块,每个模块都是一个独立的组件,便于开发和维护。 Vue3是一款全新的前端框架,相比于Vue2,它有很多优势,包括以下几个…

基于LoRa的远程气象站:实现远程气象监测与数据传输

随着物联网技术的不断发展,基于无线通信的远程气象监测系统得以广泛应用。本文将介绍一种基于LoRa技术的远程气象站,通过LoRa模块实现气象数据的远程采集和传输,为气象监测提供了一种高效、低功耗的解决方案。 LoRa技术概述 LoRa&#xff08…

ssm+vue的课程网络学习平台管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的课程网络学习平台管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体…

《从程序员到架构师》:从现在开始培养架构思维,一点都不晚

《从程序员到架构师》:从现在开始培养架构思维,一点都不晚 尽管大家都明白软件架构非常重要,但是能够真正理解并应用软件架构的核心思维去解决实战的商业项目,确实大多数程序员所欠缺的。本文将从一个全新的视角,重新带…

【算法练习Day19】二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 二叉搜索树的最近公共祖先叉…

Avalonia常用小控件Svg

1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia,项目地址 https://github.com/irihitech/Semi.Avalonia 3.SVG库,Avalonia.Svg.Skia,项目地址 https://github.com/wieslawsoltes/Svg.Ski…

【数据库——MySQL(实战项目1)】(4)图书借阅系统——触发器

目录 1. 简述2. 功能代码2.1 创建两个触发器,分别在借出或归还图书时,修改借阅人表中的已借数目(附加:借阅人表的总借书数、图书表的借阅次数以及更新图书表的图书状态为(已借出/在架上))字段;2.2 创建触发器,当借阅者…

redis 哨兵 sentinel(一)配置

sentinel巡查监控后台master主机是否故障,如果故障根据投票数自动将某一个从库转换为新主库,继续对外服务 sentinel 哨兵的功能 监控 监控主从redis库运行是否正常消息通知 哨兵可以将故障转移的结果发送给客户端故障转移 如果master异常,则…

IOS17 轻松签全能签还能不能用?多开能否使用?升级后微信底栏消失怎么办?BY:后厂村路灯

从iphone15还没出就有小伙伴们追着问, 到现在也有人一直再问iOS17能不能用,看来换手机的人很多呀。 这里统一回答一下:“iOS17苹果签名可以用,多开也可以用”但是还是有些地方注意。 如果你是16系统直接升级刀17就可以&#xff…

使用 Splashtop 驾驭未来媒体和娱乐

在当今时代,数字转型不再是可选项,而是必选项。如今,媒体与娱乐业处于关键时刻,正在错综复杂的创意、技术和远程协作迷宫之中摸索前进。过去几年发生的全球事件影响了我们的日常生活,不可逆转地改变了行业的运作方式&a…

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试? 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资…

【C++STL基础入门】list基本使用

文章目录 前言一、list简介1.1 list是什么1.2 list的头文件 二、list2.1 定义对象2.2 list构造函数2.3 list的属性函数 总结 前言 STL(Standard Template Library)是C标准库的一个重要组成部分,提供了一套丰富的数据结构和算法,可…

【Lombok的Bug记录】前端传的有值,但是到后端就全为空了

项目场景: 项目背景:使用Data注解标注类 问题描述 前端传的有值,但是到后端就全为空了 原因分析: AName和aName生成的set方法名是一样的,所以换名字就行了! 解决方案: 属性不要写成xXxx的形式…

【伪彩色图像处理】将灰度图像转换为彩色图像研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

YB4014是可以对单节磷酸铁锂电池进行恒流/恒压充电管理的集成电路。

概述: YB4014是可以对单节磷酸铁锂电池进行恒流/恒 压充电管理的集成电路。该器件内部包括功率晶 体管,不需要外部的电流检测电阻和阻流二极管 YB4014只需要极少的外围元器件,非常适合于 便携式应用的领域。热调制电路可以在器件的功 耗比较大…

flutter开发入门,windows环境安装,耗时一天解决各种bug,终于成功

首先说明要安装的环境:java8必须,android studio,chrome是开发安卓和web是必须的 java8的下载地址:https://www.java.com/en/download/、 java8蓝奏云下载地址:jre-8u381-windows-x64.exe - 蓝奏云 flutter国内环境…

Spring Boot 中的 Redis 数据操作配置和使用

Spring Boot 中的 Redis 数据操作配置和使用 Redis(Remote Dictionary Server)是一种高性能的开源内存数据库,用于缓存、消息队列、会话管理和数据存储。在Spring Boot应用程序中,Redis被广泛用于各种用例,包括缓存、…

下载安装Ipa Guard

下载安装Ipa Guard 可以前往ipaguard工具官网下载,工具是免费下载,免费体验使用的。下载地址是https://www.ipaguard.com。 下载后解压工具便ok了,工具是绿色软件,无需其他安装流程。双击Ipa Guard.exe 启动ipaguard。 ipaguard…