zookeeper介绍

1. 由来: zookeeper是雅虎研究院开发的, 初衷是为了解决内部很多系统的分布式调度问题而开发的,是一款通用的无单点问题的协调式分布框架,由于很多框架是以动物名字命名(Pig),起名为动物园管理员。

 

2. zookeeper是分布式一致性服务的注册中心,可以将分布式一致性服务封装成原语集(操作系统或者计算机网络的概念,用来指封装一系列的命令用来完成特定功能,特点是是执行是连续的,一旦执行不能被打断)。最常用的是服务生产者和服务消费者的注册中心。

 

3. zookeeper通常以集群形式存在,集群数量为单数,允许半数以下的节点挂掉(容灾能力强),zookeeper底层提供两种服务:1)存储和读取数据;2)监控节点状态服务。适用在读多于写的场景。

 

4. Session会话指的是客户端与服务器的会话,是第一次客户端连接服务器时会被分配的标识sessonid唯一,两者之前是TCP长连接。若断开,通过sessionTimeout来检测超时连接时间,只要在超时时间内重新连接,session还是之前的会话,依然有效。

 

5. zookeeper中的Znode,分为两种:一种是集群中机器的机器节点,二是数据结构的数据单元节点。Znode分为临时节点和永久性节点,临时节点指的是和客户端相关的,客户端一旦关闭临时节点就会消失。zookeeper会为每个节点生成一个标记SEQUENTIAL,自增整数,用来标识不同的节点。

 

6. Znode节点中存储的数据是结构性存储,数据模型是树状存储。每个Znode会维护一个stat数据结构,包括version(当前版本)/cversion(子节点版本)/aversion(ACL版本)。

 

7. zookeeper中的ACL权限控制:access controll lists. 用来控制节点权限。有5种:Create(创建子节点权限)/Delete(删除子节点权限)/Update(更新节点权限)/Read(读取节点及子节点权限)/Admin(设置权限). 其中Create和Delete都是针对子节点的权限控制。

 

8. zookeeper特点:1)顺序一致性。客户端的发起的事务会完全按照顺序去zookeeper上执行。2)单一映像。不管连接的是zookeeper的哪台机器,看到的系统模型是一致的。3)原子性。客户端集群中的所有机器统一应用某个服务结果,即集群获取事务是一致的。4)可靠性。应用被修改后会被持久化。

 

9. zookeeper的顺序一致性体现在,会为客户端的每个请求分配一个顺序的zxid(zookeeper transcation id),64位,根据zxid来进行处理保证顺序。zookeeper集群内部机器是相互通信的,通过Zab协议进行,zookeeper auto boradcast. 客户端连接时只要知道集群的地址即可建立长连接。

 

10. 典型的集群模式:Master/Slave模型。其中Master负责集群的写操作,Slave通过异步复制方式从Master同步数据提供读服务。

Zookeeper采用的是Leader/Follower/Obverse模型,其中Leader负责写,Follower和Obverse只能提供读服务。Follower和Obverse区别在于,Obverse不参加Leader的竞选,也不参与"过半写成功"策略,一般在不影响写操作的情况下,用来提升读取速度。

 

11. Zookeeper设计成一个Leader来进行事务处理的模式。需要理解的Zab协议,此协议用来做崩溃恢复和广播通知。当Leader挂了,内部开启选举模式选出新Leader,新Leader要和半数以上的机器中事务进行数据同步或者说恢复处理,当处理完成后,Leader就开启广播通知。新启动的遵循Zab协议zookeeper节点,会找到Leader进行数据同步并加入到广播通知队列,这就是只需要一个Leader进行事务处理的原因。当Leader接收到客户端的事务后,先生成事务预案然后发起广播,如果是非Leader节点收到事务请求,会先转发给Leader节点进行处理。

 

12. Watcher监听器,是Zookeeper允许客户定义Watcher,当特定事件发生时服务器会将事件通知到感兴趣的客户上。

 

13. Zookeeper数据发布和订阅。Zookeeper使用推拉结合的发布(PULL)/订阅(PUSH)模式,客户端想关注自己需要的服务器节点,一旦服务器的数据节点发生变化,Zookeeper会通过Watcher事件通知客户端,客户端收到消息通知后,需要主动到服务器上来获取最新数据。(IZkDataListener监控器和IZkChildListener监控器)

 

14. zookeeper解决集群服务中的master选举问题。集群中一般采用master/slaver进行管理,zookeeper中Master选举的管理机制是:当集群进行服务注册时,每台集群服务器会向zookeeper的Server节点下注册一个临时节点,同时去争抢向zookeeper的Master节点注册临时节点,谁抢先注册到谁就是集群的Master,其他的集群服务器就是slaver节点。当Master节点挂了时,由于是临时节点,zookeeper会自动删除节点信息,这时会触发其他slaver节点的Watcher事件来争抢Master节点,谁争抢到谁是新的Master节点。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值