zookeeper笔记

来源:互联网 发布:网络机柜布线 编辑:程序博客网 时间:2024/05/16 17:23

一、定义

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Zookeeper可以用来保证数据在ZK集群之间的数据的事务性一致。ZooKeeper是以Fast Paxos算法为基础的。

二、优点

1、最终一致性:最后为客户端展示同一个视图
2、可靠性:一台服务器节点故障了,客户端请求可以被其他服务器节点接受
3、实时性:zookeeper不能保证两个客户端同时得到最新的数据,如果需要最新数据,应该读数据之前调用sync()接口
4、独立性:各个客户端之间互不干预
5、原子性:所有的服务节点同时成功或失败
6、顺序性:leader接受处理请求是顺序的,按照先进先出

三、工作原理

1、每个service在内存中存储了一份数据

2、zookeeper启动时,将从实例中选举一个leader(Paxos协议,投票超过半数)

3、leader负责数据更新操作

4、一个数据更新成功,要当所有service在内存中修改成功

四、zookeeper角色

1.领导者(leader),负责进行投票的发起和决议,更新系统状态
2.学习者(learner),包括跟随者(follower)和观察者(observer)
3.follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票
4.Observer可以接受客户端请求,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。
5. 客户端(client),请求发起方

五、集群服务器个数

最好使用单数,因为zookeeper投票机制要过半才可以选择leader和更新数据,单数服务容灾更好,可以节约一台服务器。比如3台服务,允许故障一台,如果4台服务,也是只允许故障一台;防脑裂,偶数服务故障一半就无法工作

六、数据模型Znode

1、ZooKeeper拥有一个层次的目录结构,命名符合常规文件系统规范。
2、每个节点叫做znode,并且其拥有一个唯一的路径标识。节点znode可以包含数据和子节点, 用户对znode具有增、删、改、查等操作。
3、znode中的数据可以有多个版本,在查询该znode数据时就需要带上版本信息
4、znode可以被监控,该目录下某些信息的修改,例如节点数据、子节点变化等,可以主动通知监控注册的client。事实上,通过这个特性,可以完成许多重要应用,例如配置管理、信息同步、分布式锁等等
5、节点不支持部分读写,要一次性完整读写
6、ZooKeeper中的节点有两种,分别为临时节点和永久节点。临时znode的client与server断开连接,该znode将被自动删除,且临时Znode不能有子节点

七、watcher观察

watcher可以监控目录节点的数据变化及子节点的变化,一旦节点目录状态发生变化,服务器会通知所有设置在这个节点目录的上的watcher,从而每个客户端就知道节点目录发生变化,可以做出相应操作。

可以设置观察的操作:exists,getChildren,getData
可以触发观察的操作:create,delete,setData

原创粉丝点击