Hazelcast IMDG技术详解

IMDG技术详解

用Java写的,分布式的,可以支持Java,C++,.NET,REST,Python,Go和Node.js的API。还支持Memcached和REST的协议。兼容Hibernate。
IMDG是支持云原生,微服务,开箱即用的数据存储和计算平台。IMDG一个JAR包就可以用,没有其他依赖。支持几百个实例和几千个客户端,自动扩容,所有节点之间用TCP连接,最老的节点负责分配数据任务,如果最老的节点宕机,第二老的节点接替它。
IMDG自带弹性扩容,分片,负责均衡,不需要额外的同步进程。这点比传统数据库和NOSQL强。
IMDG优点:
 开源
 单JAR
 所有数据都在内存,高速读和更新。
 P2P的,数据和计算均分。可以嵌入使用也可以搭建服务使用。
 所有节点保持连接,知晓对方
 开箱即用

IMDG架构

在这里插入图片描述

两种部署

嵌入式部署
有更好的低延时。只适用Java。
在这里插入图片描述
服务端部署
扩容比较简单。可以支持多种编程语言。
在这里插入图片描述
为了减少延时,还可以在这种方式下配置Near Cache,进一步提升性能。
服务端部署模式跟嵌入模式还有一点不同,因为HazelcastClient仅仅是一个Jet任务提交工具,因此客户端的本地java类就算实现了序列化也没法传输到server端,除非事先在server的某个lib目录用jar引入了它们。

数据分片

IMDG中的内存段叫做分片。默认情况下IMDG只有一主一备两份数据。默认情况下IMDG有271个分片。
启动一个实例的时候,内存分布如下:
在这里插入图片描述
启动两个实例,内存分布如下:
在这里插入图片描述
第二个实例的数据分布是随机的。
启动四个实例的时候:
在这里插入图片描述
一致性hash算法自动做了扩容。

IMDG还有一种Lite的节点。它不存储数据,只用来做计算。

IMDG中的数据是简单按照分片数取模来做分片的。

Partition Table

它存储了分片ID和分片在集群中的位置。就一全局表。最老的实例上创建这个表,然后定时同步到所有实例上,如果发生宕机,自动转移到第二老的实例。

hazelcast.partition.table.send.interval

这个参数默认是15秒,可以调整上报的频率。

重新分片

当有节点加入或者离开集群的时候会触发重新分片。但是Lite节点不会触发重新分片。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值