1. Hazelcast 是什么?
- 分布式存储
- 分布式计算
2. Hazelcast 的分布式存储是什么样的?
Hazelcast 官方称不依赖于磁盘存储,将所有运行状态保存在集群的随机存取存储器 (RAM) 中,然后由集群成员的 RAM 组合成一个内存数据存储,这种分布式模型称为_缓存集群。_
Hazelcast 提供了多种数据存储结构,例如Map、Queue、MultiMap、Set、List、Semaphore、Atomic 等常用接口的分布式实现,以及结构Topic可应用到分布式主题(发布/订阅服务器)为智能手机构建可扩展的聊天服务器,
以Map接口为例,当我们通过Hazelcast创建一个Map实例后,我们在节点A调用 Map::put("A","A_DATA") 方法添加数据,然后可以在节点B使用 Map::get("A") 获取到值为"A_DATA" 的数据。
3. Hazelcast存储数据的实现过程
3.1 Hazelcast分区
由于Hazelcast 服务之间是端对端的,没有主从之分,集群中所有的节点都存储等量的数据以及进行等量的计算。
Hazelcast 默认情况下把数据存储在 271 个区上,这个值可以通过系统属性 hazelcast.partition.count来配置。
3.2 Hazelcast分区存储原理
对于一个给定的键,在经过序列化、哈希并对分区总数取模之后能得到此键对应的分区号,所有的分区等量的分布与集群中所有的节点中,每个分区对应的备份也同样分布在集群中。
也就是说 Hazelcast 会使用哈希算法对数据进行分区,比如对于一个给定的map中的键,或者topic和li