1.1 Hazelcast概述
如果你正在寻找基于内存的、高速的、可扩展的、对开发者友好的NoSQL,Hazelcast是一个很棒的选择。
Hazelcast是基于内存的数据网格开源项目
提供弹性可扩展的分布式内存计算
通过提供对开发者友好的Map、Queue、ExecutorService、Lock和JCache接口使分布式计算变得更加简单。例如,Map接口提供了内存中的键值存储
还提供了一组方便的api来访问集群中的CPU,以获得大的存储速度。轻量化和简单易用是Hazelcast的设计目标
1.2 特点
简单
节点对等
可扩展
快 快 快
1.3 Hazelcast中的分片
Hazelcast的分片也称为分区,Hazelcast默认271个分区,通常会对分区备份,将副本分布到集群的不同节点,通过数据冗余提高可靠性,这种数据的存储方式和Kafka、Redis Cluster类似。给定一个key,在集群中查找key对应数据的过程如下图所示:
1.4 Hazelcast的拓扑结构
Hazelcast集群有两种部署模式:内嵌模式,客户端/服务器模式
1.5 为什么选择Hazelcast
1.5.1 传统的数据一致性方案
1.5.2 Hazelcast的一致性解决方案
1.5.3 Hazelcast独特的优势
- 开源
- 只是一个jar包,不需要安装软件
- 只是一个库,它并不对Hazelcast用户架构
- 开箱即用的分布式数据结构,比如地图、队列、多重映射、话题、锁定和执行者
- 没有“大师”
- 当内存的大小和计算需求的增加,新成员可以动态的加入到Hazelcast集群规模弹性
- 数据成员失败的弹性。数据备份是分布在集群。
- 成员都意识到彼此不像在传统的键值缓存解决方案
1.6 使用场景
- 共享服务器配置和服务器信息
- 集群数据变更通知
- 作为简单的内存缓存
- 作为一个在特定节点执行特定任务的调度器
- OSGI框架下不同节点共享信息
- 集群内共享数千个key
- 作为Cassadra的前端
- 集群内分发用户状态,不同对象传递信息,共享系统数据结构
- 多租户缓存,每个租户都有自己独立的缓存
- 共享数据集合
- 从亚马逊EC2分发和收集负载信息
- 作为性能检测的实时流
- Session存储器