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架构

Hazelcast IMDG技术详解_第1张图片

两种部署

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

数据分片

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

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

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

Partition Table

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

hazelcast.partition.table.send.interval

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

重新分片

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

你可能感兴趣的:(PaaS,java,内存数据库)