一、概述
ZooKeeper 是一种分布式协调服务,通过简单的架构和API解决在分布式环境中协调和管理服务的问题。它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。可用于统一命名服务、统一配置管理、统一集群管理、服务器动态上下线、软负载均衡。
二、数据模型----类似树结构
Zookeeper结构类似树,数据存储基于节点Znode,但是不同于树的节点,Znode的引用方式是路径引用,类似于文件路径。
2.1 Znode包含元素:data、ACL、child、stat
- data:Znode 存储的数据信息。
- ACL:记录 Znode 的访问权限,即哪些人或哪些 IP 可以访问本节点。
- stat:包含 Znode 的各种元数据,比如事务 ID、版本号、时间戳、大小等等。
- child:当前节点的子节点引用。
2.2 Znode类型
- 持久节点:除非手动删除,否则一直存在于Zookeeper上。
- 临时节点:临时节点的生命周期与会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。
- 持久顺序节点:基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
- 临时顺序节点:基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
三、应用场景
见参考链接1
四、客户端常用命令
exists、getDataa、getChildren数与读操作,Zookeeper客户端在请求读操作的时候,可以设置是否Watch。
五、监听器原理
六、选举机制—ZAB,解决Zookeeper集群崩溃恢复
见参考链接1
七、写数据流程—Zookeeper的一致性