一. Zookeeper特性
- 是由一个leader,多个follower组成的集群
- 数据一致性,每个server保存一份相同的数据副本,client无论连到哪个server,数据都是一致的。在Zookeeper的设计中,以下几点考虑保证了数据的一致性:
- 顺序一致性:更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行
- 原子性:一次数据更新要么成功,要么失败
- 实时性:在一定时间范围内,client能读到最新数据
- 持久性:一个更新一旦成功,其结果就会持久存在并且不会被撤销
- 单一系统映像:一个客户端无论连接到哪一台服务器,它看到的都是同样的系统视图
二. Zookeeper数据模型
- 层次化的树形结构
- 每个节点在Zookeeper中称为znode,并具有唯一路径标识
- znode既可以保存数据,也可以保存其他znode(子节点)
- znode以某种方式发生变化时,观察(watch)机制可以让客户端得到通知
三. 节点类型
- Znode有两种类型:
- 短暂(ephemeral)创建znode的客户端断开连接时,短暂znode都会被Zookeeper服务删除。并且短暂znode不可以有子节点
- 持久(persistent)创建znode的客户端断开连接时,持久znode不会被删除
- Znode有四种形式的目录节点(默认为persistent)
- persistent
- persistent_sequential
- ephemeral
- ephemeral_sequential
- 创建znode时设置顺序号(sequential),znode名称后会附加一个值,这个值是由一个单迪增的计数器(由父节点维护)所添加的