【参考】https://blog.csdn.net/liyiming2017/article/details/83035157
Zookeeper 对分布式的协调 使用共享存储方式,zookeeper 不直接暴露分布式服务所欲要的原语以及调用方法
1.Znode
Zookeeper中 信息被保存在数据节点上znode
(1)Master 存储当前主节点信息
(2)Workers 下每一个znode代表从节点 子znode上存储数据
(3)Tasks 下面每个子node代表人物 自弄得存储的信息如 cmd 代表内容内容
(4)Assign 下面每个子znode代表一个从节点任务集合
例:/assign/worker-1 代表worker-1这个从节点任务集合
2.持久节点 和 临时节点
持久节点persistent 只能通过delete删除
临时节点ephemeral在创建该机诶单客户端奔溃关闭 自动删除
3.有序节点
Znode可以被设置有序节点,有序节点 被分配唯一一个单调递增的证书
4.API
Create /path data 创建一个/path的znode 数据为data
Delete /path 删除/path的znode
Exists /path 检查书否存在 /path 的znode
setData /path data 设置/path的znode数据为data
getData /path 返回/path znode得数据
GetChildren /path 返回所有子节点列表
5. 观察与通知
zookeeper采用了通知的机制。客户端向zookeeper请求,在特定的znode设置观察点(watch)。当该znode发生变化时,会触发zookeeper的通知,客户端收到通知后进行业务处理。观察点触发后立即失效。所以一旦观察点触发,需要再次设置新的观察点。
Zookeeper 只能保证最终一致性无法保证强一致性
6.版本
每一个znode都有版本号,随着每次数据变化自增 setData和delete ,使用版本号作为参数,当传入版本号与服务器不一致调用失败
当多个zookeeper客户端同时对一个znode操作时,版本将会起到作用,假设c1,c2同时往一个znode写数据,c1先写完后版本从1升为2,但是c2写的时候携带版本号1,c2会写入失败。
7.法定人数
Zookeeper服务器运行两种模式
(1)独立模式
(2)仲裁模式
复制所有服务器的数据数,避免让客户端等待所有复制完成的时间等待,引入法定人数,保证zookeeper正常工作时必须有效运行的服务器数量,遵循多数原则。遵循多数原则(法定人数大于服务器数量一半)
例如我们有一个5台服务器的zookeeper集群,法定人数为3,只要任何3个服务器保存了数据,客户端就会收到确认。只要有3台服务器存活,整个zookeeper集群就是可用的。
8.会话
客户端与ziikeeoer发送任何请求前 需要和zookeeper集群建立会话,客户端提交给zookeeper的所有操作关联在一个会话上。当一个会话终止时会话期间创建的临时节点消失。
如果因为当前服务器原因无法通信,会话江北同名的转移给另外一台zookeeper服务器
会话请求FIFO顺序执行
8.1会话声明周期与状态
Connecting
Connected
Closed
Not_connected