概念 |
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,他基于ZAB协议完成一套主备模式的架构来保证数据的一致性。
今天这个总结按照下边的导图展开:
数据模型 |
zk的数据结构是类似文件系统的树形结构,他的最小单位称为znode,他可以完成数据保存和节点的挂载。znode又分为四种类型,分别为持久化节点,持久化有序节点,临时节点(会话结束节点自动被清理),临时有序节点。
p.s. 当客户端启动的时候会和zookeeper产生一个TCP的长连接,这个时候会话的生命周期也就开始了,通过这个连接,客户端能够通过心跳检测和服务器保持有效的会话,也能够向ZooKeeper服务器发送请求并接受响应,同时还能通过该连接接收来自服务器的Watch事件通知。但连接因为某些原因断开了,只要在sessionTimeOut时间的范围内找连接到一个新的节点,之前的会话还是有效的。
我们可以利用了临时有序节点的特性来实现分布式锁。
watcher机制 |
watcher机制实现了分布式的发布/订阅,允许客户端向服务器注册一个watcher监听。当服务器端的节点触发指定事件的时候,会触发watcher,服务器端会向客户端发送一个事件通知。但是watcher是一次性的,触发后就失效了。
zk的特性 |