zookeeper学习(2)--zookeeper原理介绍

1、zookeeper实现分布式协同的原理
zookeeper采用共享存储的方式,当主节点对某个从节点的任务分配信息作出改变时,从节点会得到zookeeper的通知,取得自己最新的任务分配,完成任务后将任务完成情况汇报给zookeeper,主节点订阅了该任务的完成情况,将得到关于该任务完成的通知。

2、znode
zookeeper将任务分配,完成情况保存在每一个znode上,采用了类似文件系统的层级树状结构进行管理,
znode上存储的数据为字节数组,对存储的数据格式没有限制,也不会提供解析。
znode分为临时节点和持久化节点,持久节点只能通过delete删除。临时节点在创建该节点的客户端崩溃或关闭时,自动被删除。由于临时znode会因为创建者会话过期被删除,所以不允许临时节点拥有子节点。
另外znode可以被设置为有序(sequential)节点。有序znode节点被分配唯一一个单调递增的证书。如果创建了个一有序节点为/workers/worker-,zookeeper会自动分配一个序号1,追加在名字后面,znode名称为/workers/worker-1。通过这种方式,可以创建唯一名称znode,并且可以直观的看到创建的顺序。
每个znode都有版本号,随着每次数据变化自增。setData和delete,以版本号作为参数,当传入的版本号和服务器上不一致时,调用失败。当多个zookeeper客户端同时对一个znode操作时,版本将会起到作用,假设c1,c2同时往一个znode写数据,c1先写完后版本从1升为2,但是c2写的时候携带版本号1,c2会写入失败。

3、观察与通知
我们使用Zookeeper不能期望能够监控到节点每次的变化,只能保证最终一致性,不能保证强一致性

4、运行模式:仲裁模式和独立模式
仲裁模式下,法定人数》服务器数量的一半(多数原则),则集群可用,服务器的数量最好选择奇数,这样集群能容忍崩溃服务器占比更大,性价比更高,例如6台服务器,法定人数为4,最多容忍2台服务挂掉,7台服务器,法定人数也为4,最多能容忍3台服务器挂掉。
5、会话与生命周期

会话超时时间为t,客户端发送请求,如何1/3t内收不到请求,则会向服务端发送心跳消息,2/3t后开始寻找其他服务器,最后的1/3t如果还没有找到可用服务器,则该次会话失效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值