1. ZK 简介
ZK 是一种【分布式协调服务】,功能简介:
- 配置维护
- 域名服务
- 分布式同步
- 集群管理
1.1一致性要求
- 顺序一致性
- 原子性
- 单一视图
- 可靠性
- 实时性
1.2 Session
Session 是指客户端会话。ZK对外的服务端口默认是 2181,客户端启动时,首先会与ZK服务器建立一个TCP长连接,从第一次链接建立开始,客户端会话的生命周期也开始了,通过这个长连接,客户端能够通过心跳检测保持与服务器的有效会话,也能够向ZK服务器发送请求并接受响应,同时还能通过该连接收到来自服务器的Watcher时间通知。
Session 的 SessionTimeout 值用来检测一个客户端回话的超时时间。当由于服务器压力太大、网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在Session Timeout 规定的时间内客户端能够重新开始连接上集群中任意一台服务器,那么之前创建的会话仍然有效。
1.3 zk的数据模型
ZK的文件系统采用树形结构层次化的目录结构,与Unix文件系统非常相似。每个目录在ZK中叫做一个ZNode,每个ZNode拥有一个唯一的路径标识,即名称。ZNode可以包含数据和子ZNode(临时节点不能有子ZNode)。ZNode中的数据可以有多个版本,所以查询某路径下的数据需要带上版本号。客户端应用可以在ZNode上设置监视器(Watcher)。
它很像是数据结构当中的树,也很想文件系统的目录。
树是由节点组成,zk的数据存储也同样是基于节点,这种节点叫做Znode。但是不同于树的结点,Znode的引用方式是路径引用,类似于文件路径:/动物/仓鼠
; / 植物/荷花
。
Znode包含了数据、子