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如果还没有找到可用服务器,则该次会话失效。

你可能感兴趣的:(zookeeper)