ZooKeeper 是一个开源的分布式协调架,主要用来解决分布式集群中应用系统的一致性问题
本质
分布式的文件存储系统(Zookeeper=文件系统+监听机制),是一个基于观察者模式设计的分布式服务管理框架
zookeeper的数据结构
Zookeeper的层次模型称作Data Tree,Data Tree的每个节点叫作Znode。每个节点都可以保存数据,默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识,每个节点都有一个版本(version从0开计数)。
1.文件系统的树形结构便于表达数据之间的层次关系
2.文件系统的树形结构便于为不同的应用分配独立的命名空间( namespace)
节点分类
类型 | 生命周期 | 创建示例 |
---|---|---|
持久节点 | 创建该节点的客户端与服务端的会话关闭了,该节点依然不会被删除 | create /locks |
临时节点 | 当创建该临时节点的客户端因会话超时或发生异常而关闭时,该节点也相应在 ZooKeeper 服务器上被删除。 | create -e /locks/lock |
有序节点 | 在持久节点和临时节点特性的基础上,增加了一个节点有序的性质。在创建有序节点的时候会自动使用一个单调递增的数字作为后缀 | create -e -s /locks/lock |
容器节点 | 当一个容器节点的最后一个子节点被删除后,容器节点也会被删除 | create -c /work |
TTL节点 | 当一个TTL节点在TTL内没有被修改并且没有子节点,会被删除。(需要配置extendedTypesEnabled=true) | ate -t 3000 /ttl_node |