Hazelcast IMDG 概览

news2024/9/22 13:45:11

数新网络-让每个人享受数据的价值icon-default.png?t=N7T8https://www.datacyber.com/

一、简介

Hazelcast IMDG(in-memory data grid)是开源的、分布式高可用的、开箱即用的、云原生的内存数据网格,可用作开箱即用的数据和计算平台,或用作自己的云原生应用程序和微服务的框架。

支持的编程语言:Java Member/ Client,C#,C++,Node.js,Python,Go。(备注:除 Java 其他仅支持Client方式)

特性:

简单:内置群集和发现功能。只需启动一个新成员,它就会加入集群,集群将自动重新平衡数据。每个成员处理一部分主数据和备份数据。Hazelcast集群可以在任何支持JVM的地方运行。

强大:Hazelcast 可以在您添加成员时水平缩放,也可以利用所有可用内存垂直缩放。

灵活:Hazelcast 集群可以通过启动更多成员进程来增加容量。您可以在集群运行时添加成员,从而实现零停机时间。集群会自动重新平衡数据,以确保每个成员中的内存均匀使用。

可靠:Hazelcast 通过在集群中的其他成员上存储副本来确保数据安全。集群的每个成员都负责一部分主条目和副本条目。没有主进程或副本进程的概念。Hazelcast可以智能地将副本放置在最安全的成员,另一台物理机器上,甚至是另一个机架上。

二、整体架构

您可以在以下架构图中看到所有 Hazelcast IMDG 版本的功能。

要获得 Hazelcast IMDG 更多详情可以查看白皮书:

An Architect's View of the Hazelcast Platform | Hazelcast

三、部署拓扑图

Hazelcast 集群可通过两种方式部署:嵌入式或客户端/服务器。

1、嵌入式部署:低延时更好,仅支持Java

如果您的应用程序的主要焦点是异步或高性能计算以及大量任务执行,那么嵌入式部署是首选方式。在嵌入式部署中,成员包括应用程序和 Hazelcast 数据和服务。嵌入式部署的优点是具有低延迟的数据访问。请参见下图:

2、服务端部署:扩容较简单,可支持多种编程语言

在客户端/服务器部署中,Hazelcast 数据和服务集中在一个或多个服务器成员中,应用程序通过客户端访问它们。您可以拥有可独立创建和扩展的服务器成员集群。您的客户与这些成员进行通信,以访问他们的Hazelcast数据和服务。请参见下图。

(服务端部署模式跟嵌入模式还有一点不同,因为HazelcastClient仅仅是一个Jet任务提交工具,因此客户端的本地java类就算实现了序列化也没法传输到server端,除非事先在server的某个lib目录用jar引入了它们。)

Hazelcast提供本地客户端(Java,.NET和C++),Memcache 和 REST 客户端,Python 和 Node.js 客户端实现。

客户端/服务器部署具有优势,包括更可预测和可靠的 Hazelcast 性能、更容易识别问题原因以及最重要的是更好的可扩展性。当您需要扩展此部署类型时,只需添加更多 Hazelcast 服务器成员即可。您可以分别解决客户端和服务器可伸缩性问题。

注意:Hazelcast 成员库仅在 Java 中可用。因此,将成员嵌入到业务服务中,只有使用 Java 才能实现。用其他语言(.NET、C++、Node.js等)编写的应用程序可以使用 Hazelcast 客户端库来访问群集。有关客户端和其他语言实现的信息,请参阅 Hazelcast Clients一章。

如果需要低延迟数据访问(如嵌入式部署),并且还需要客户端/服务器部署的可伸缩性优势,则可以考虑为客户端定义近缓存。这使常用数据能够保存在客户端的本地内存中。请参阅Java Client。

四、数据分区

Hazelcast IMDG 中的内存段称为分区。分区的大小,即它们可以存储的数据条目量,受系统的物理容量限制。

分区在集群成员之间平均分布。Hazelcast 还创建这些分区的备份,这些备份也分布在集群中。

默认情况下,Hazelcast 为每个分区创建一个副本。也可以配置 Hazelcast 使每个分区可以有多个副本。其中一个副本称为“主副本”,其他副本称为“备份”。拥有分区“主”副本的集群成员称为“分区所有者”。读取或写入特定数据条目时,可以透明地与包含该数据条目的分区所有者通信。

默认情况下,Hazelcast 提供 271 个分区。当启动具有单个成员的集群时,它拥有所有 271 个分区(即它持有 271 个分区的主副本)。下图显示了具有单个成员的 Hazelcast 集群中的分区。

当您在该集群上启动第二个成员(创建具有两个成员的 Hazelcast 集群)时,将按此处的图示所示分发分区副本。

注意:下图中的分区分布是为了简单起见和描述目的而显示的。通常,分区不会按任何顺序分布(如这些图所示),而是随机分布(它们不必按顺序分布到每个成员)。这里重要的一点是,Hazelcast 在成员之间平均分配分区主节点及其备份副本。

在图中,带有黑色文本的分区副本是主副本,带有蓝色文本的分区副本是备份。第一个成员具有 135 个分区(黑色)的主副本,每个分区都在第二个成员中备份(即,第二个成员拥有备份副本)(蓝色)。同时,第一个成员还具有第二个成员的主分区副本的备份副本。

当添加更多成员时,Hazelcast 会将一些主分区副本和备份分区副本逐个移动到新成员,从而使所有成员相等且冗余。由于一致的哈希算法,仅移动最少数量的分区来横向扩展 Hazelcast。下图显示了具有四个成员的 Hazelcast 集群中的分区副本分布。

注意:您的数据可以在分区主和备份上具有多个副本,具体取决于备份计数。请参阅Map部分。

Hazelcast还提供精简成员。这些成员不拥有任何分区。Lite 成员旨在用于计算量大的任务执行和监听器注册。尽管它们不拥有任何分区,但它们可以访问群集中其他成员拥有的分区。详情参阅Cluster Utilities。

如何对数据分区

Hazelcast 使用哈希算法将数据条目分发到分区中。给定一个对象键(例如,对于 map )或对象名称(例如,对于 topic 或 list):

序列化键或名称(转换为字节数组)

此字节数组经过哈希处理

哈希的结果是分区数的 mod 

此模的结果 -  MOD(hash result, partition count)  - 是存储数据的分区,即 partition ID(分区ID)。对于集群中的所有成员,指定键的 partition ID 始终相同。

分区表

分区表存储分区 ID 及其所属集群成员的地址。此表的目的是使集群中的所有成员(包括精简成员)都知道此信息,确保每个成员都知道数据的位置。

启动第一个成员时,将在其中创建一个分区表。当您启动其他成员时,第一个成员将成为“最老”的成员,并相应地更新分区表。它会定期将分区表发送给所有成员。通过这种方式,集群中的每个成员都会被告知分区所有权的任何更改。例如,当新成员加入集群或成员离开集群时,所有权可能会更改。

注意:如果集群中最老的成员出现故障,则下一个最老的成员会将分区表信息发送给其他成员。

您可以使用 hazelcast.partition.table.send.interval 系统属性配置成员发送分区表信息的频率(时间间隔)。默认情况下,频率为 15 秒。

重新分区

重新分区是重新分配分区所有权的过程。Hazelcast 在成员加入或离开集群时执行重新分区。

在这些情况下,将使用新的分区所有权更新最早成员中的分区表。请注意,如果精简成员加入或离开集群,则不会触发重新分区,因为精简成员不拥有任何分区。

五、使用案例

对高度变化的数据进行群集并进行事件通知,例如:基于用户的事件,并对后台任务进行排队和分发

作为具备近缓存(Near Cache)的简单内存缓存

作为需要对某些成员执行的某些进程的云范围调度程序

在OSGI环境下与不同安装中的多个成员动态共享信息(用户信息,队列,映射等)

在集群中共享密钥,其中应用程序服务器上存在 Web 服务接口并进行一些验证

作为分布式主题(发布/订阅服务器),为智能手机构建可扩展的聊天服务器

作为并发 API 的强一致性层,它是 Hazelcast 的 CP(关于 CAP 原则的 CP)子系统,建立在 Raft 共识算法之上

作为 Cassandra 后端的前层

在群集中分发用户对象状态,在对象之间传递消息以及共享系统数据结构(静态初始化状态、镜像对象、对象标识生成器)

作为多租户缓存,其中每个租户都有自己的map

共享数据集,例如,类似表格的数据结构,供应用程序使用

从 Amazon EC2 服务器分配加载和收集状态,其中前端是使用 Spring 框架开发的

作为性能检测的实时流处理器

作为 Web 应用程序中会话数据的存储(实现 Web 应用程序的水平可伸缩性)

六、相关资料

Hazelcast 源码:GitHub - hazelcast/hazelcast: Hazelcast is a unified real-time data platform combining stream processing with a fast data store, allowing customers to act instantly on data-in-motion for real-time insights.

Hazelcast API :Hazelcast Root 5.3.5 API

代码示例:Open Source Downloads | Hazelcast

更多用例和资料:Hazelcast | Unified Real-Time Data Platform for Instant Action

社区 Slack 分组:Slack,可加入分组并发布问题、关注公告、参与讨论等。

社区邮件组:https://groups.google.com/forum/#!forum/hazelcast,可发布问题或发起、跟进讨论

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

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

相关文章

17、SpringCloud -- natapp 内网穿透

目录 natapp什么是内网穿透?为什么要用natapp?安装、配置:下载隧道:配置启动:访问:natapp官网 natapp 什么是内网穿透? 为什么要用natapp? 安装、配置:

[毕设记录]@学术技能积累:zotero、readpaper 引用功能使用

文章目录 zoteroreadpaper 开题要在word里插入文献引用,zotero和readpaper在浏览器和word都有插件,比较好用 zotero Zotero 是一个免费、开源的参考文献管理软件,可以帮助用户收集、整理和引用文献。它支持多种操作系统,包括 Wind…

数字时代的文化探险,拓世AI文生图解锁千年古典画作宝库

中华古典绘画,既有磅礴的山河之气势,又有细腻至微的尘芥之美。这些画作,如同时间的印记,见证了华夏千年的文明与变迁。这里面的“中国十大传世名画”更是被誉为文明的瑰宝。可是,历史的风云变幻,使得一些名…

AI时代产品经理升级之道

1.产品管理新模式:让产品管理更高效、更快捷、更完美。 2.全流程解析:涵盖产品管理的不同应用场景,介绍从编写各种文档,到竞品分析与市场调研、需求管理、原型设计,再到产品发布与运营、维护与支持等关键环节。 3.实战…

游戏在小米设备上因自适应刷新率功能,帧率减半

1)游戏在小米设备上因自适应刷新率功能,帧率减半 2)Lua在计算时出现非法值,开启Debugger之后不再触发 3)如何在Unity中实现液体蔓延的效果 这是第357篇UWA技术知识分享的推送,精选了UWA社区的热门话题&…

发布一站式反电诈工具,合合信息商业大数据技术助力银行守护群众“钱袋子”

近期,电影《孤注一掷》在社交媒体上引起了广泛的讨论,社会各界对于电信网络诈骗案件的关注度日益提升。真实世界中的电诈涉及金额之大、团伙成员之多,往往比电影更甚。为此,国家不断加大对电信诈骗的打击力度,出台《反…

【RTOS学习】CubeMX对FreeRTOS的适配

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 经过前面的学习,现在我已经对FreeRTOS有了一个初步的认识,而且也可以使用F…

AI最终会是恐怖的制造者?原来OpenAI早已预言

原创 | 文 BFT机器人 不知道大家最近有没有关注美国电影,有一部关于人工智能反抗人类统治的名为《AI创始者》科幻电影即将在美国好莱坞上映,该电影讲述的是一个原本为人类服务的人工智能,有了自主意识,开始反抗人类的统治&#x…

2023年双11腾讯云优惠活动整理汇总

2023年双11购物狂欢节将至,腾讯云推出了11.11大促优惠活动,免费领取9999元代金券礼包;云服务器、云数据库、COS等上云必备产品,低至1.8折起;云产品助力企业和开发者轻松上云! 一、腾讯云双11活动地址 活动…

远程IO:实现立体车库高效运营的秘密武器

随着城市的发展,车辆无处停放的问题变得越来越突出。为了解决这个问题,立体车库应运而生。立体车库具有立体空间利用率高、存取车方便、安全可靠等优点,成为现代城市停车的重要解决方案。 立体车库控制系统介绍 在立体车库中,控制…

java解决修改图片尺寸,压缩图片后出现背景变黑,图片字体模糊问题

将以下数学公式的图片使用Hutool提供的图片工具类改变尺寸 代码如下: package com.jason.common.file.word;import cn.hutool.core.img.ImgUtil; import cn.hutool.core.io.FileUtil;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage;…

数字化时代,谈谈无处不在的大数据和商业智能BI的关系

随着数字化时代的正式到来,众多领域开展了新一轮的科技革命和产业革命,通过大数据或商业智能BI等数据类技术解决方案,完成了从业务、产品到经营模式、管理决策的全方位升级,获得了突破性的成长。 如今,大数据和商业智…

数字孪生技术与VR:创造数字未来

在当今数字化浪潮中,数字孪生和虚拟现实(VR)技术是两大亮点,它们以独特的方式相互结合,为各个领域带来了创新和无限可能。本篇文章将探讨数字孪生与VR之间的关系,以及它们如何共同开辟未来的新前景。 数字…

C语言数组首地址学习1

C语言数组名也是数组首地址&#xff1b;数组首地址&#xff0c;也就是数组首元素地址&#xff1b; 数组首地址也可以用第0个元素加&表示&#xff0c;数值a的首地址是&a[0]&#xff1b; #include <stdio.h> int main(){int nums[5];int i;//从控制台读取用户输…

408-2017

一、单项选择题 1.下列函数的时间复杂度是______. int func(int n){int i0,sum0;while(sum<n){sumi;}return i; } A.O(log n) B.O(n^1/2) C.O(n) D.O(nlog n) 解答&#xff1a;B 循环里面的内容为 1~x 求和&#xff0c;求和结果为 sum(1x)x/2&…

C#__对Json文件的解析和序列化

Json: 存储和交换文本信息的语法。&#xff08;类似XML&#xff0c;语法独立&#xff09; 一种轻量级的数据交换格式。&#xff08;更小&#xff0c;更快&#xff0c;更易解析&#xff09; 语法规则: 数据在键值对里面&#xff0c;数据由逗号分隔开。 …

《研发效能(DevOps)工程师》课程简介(一)丨IDCF

为贯彻落实《关于深化人才发展体制机制改革的意见》&#xff0c;推动实施人才强国战略&#xff0c;促进专业技术人员提升职业素养、补充新知识新技能&#xff0c;实现人力资源深度开发&#xff0c;推动经济社会全面发展&#xff0c;根据《中华人民共和国劳动法》有关规定&#…

SpringBoot整合自签名SSL证书,转变HTTPS安全访问(单向认证服务端)

前言 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面&#xff0c;事物皆具两面性&#xff0c;它也是有不足之处的。例如&#xff1a; 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听。不验证通信方的身份&#xff0c;因此有可能会遭遇…

【精】UML及软件管理工具汇总

目录 1 老七工具&#xff08;规划质量&#xff09; 1.1 因果图&#xff08;鱼骨图、石川图&#xff09; 1.2 控制图 1.3 流程图:也称过程图 1.4 核查表:又称计数表 1.5 直方图 1.6 帕累托图 1.7 散点图&#xf…

完美的代价

题目&#xff1a; * 题目&#xff1a; * 回文串&#xff0c;是一种特殊的字符串&#xff0c;它从左往右和从右往左读是一样的。 * 现在给你一个串&#xff0c;它不一定是回文的&#xff0c;请你计算最少的交换次数使得该串变为完美的回文回文串。 * 例如&#xff1a;mamad * 第…