Zookeeper介绍

上传人:添*** 文档编号:189762840 上传时间:2021-08-07 格式:DOCX 页数:5 大小:3.12MB
返回 下载 相关 举报
Zookeeper介绍_第1页
第1页 / 共5页
Zookeeper介绍_第2页
第2页 / 共5页
Zookeeper介绍_第3页
第3页 / 共5页
Zookeeper介绍_第4页
第4页 / 共5页
Zookeeper介绍_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Zookeeper介绍》由会员分享,可在线阅读,更多相关《Zookeeper介绍(5页珍藏版)》请在金锄头文库上搜索。

1、Zookeeper-设计目标:将那些复杂且容易出错的分布式一致服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。组成Zookeeper集群的每台机器都会在内存中维护当前的服务器状态,并且每台机器之间都互相保持着通信,只要集群中超过一半的机器能够正常工作,那么整个集群就能够正常对外服务。对于来自客户端的每个更新请求,Zookeeper都会分配一个全局唯一的递增编号,反应了所有事务操作的先后顺序。Zookeeper将全量数据存储在内存中,并直接服务于客户端的所有非事务请求,因此尤其适用于以读操作为主的应用场景。基本概念-集群角色:Leader、Follower、Obs

2、erver 三种角色。集群中的所有主机通过Leader选举过程来选定一台被称为“Leader”的机器 - 为客户端提供读和写的服务。Follower和Observer都能够提供读服务,唯一的区别在于:Observer不参与Leader选举过程,也不参与写操作的“过半写成功”策略。 - Observer可以在不影响集群写性能的情况下提升集群的读性能。会话Session:一个客户端连接是指客户端和服务器之间的一个TCP长连接,对外服务的端口默认是2181,客户端启动的时候,会与服务器建立一个TCP连接。如果中途因为网路故障或客户端主动断开等,只要在sessionTimeout规定的时间内能够重新连

3、接上,之前创建的会话仍然有效。数据节点Znode:数据模型中的数据单元,Zookeeper将所有数据存储在内存中,数据模型是一棵树Znode Tree,由斜杠/ 分开的路径如/foo/path1,就是一个Znode。每个Znode上都会保存自己的数据内容,同时还会保存一些列属性信息。分为持久节点和临时节点。持久节点- 一旦这个Znode被创建了,除非主动移除,否则一直在。临时节点的生命周期和客户端会话绑定。Watcher:允许用户在指定节点上创建Watcher,并且在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端上去。ACL:Access Control List

4、s 权限控制定义了五种权限: CREATE:创建子节点的权限 READ:获取节点数据和子节点列表的权限 WRITE:更新节点数据的权限 DELETE:删除子节点的权限 ADMIN:设置节点的ACL的权限Leader功能: 恢复数据 维持与Participant的心跳,接收Participant请求并根据请求类型进行不同的处理。Participant消息类型: ping消息 - Leader的心跳信息 REQUEST消息 - Participant发送的提议消息,包括写请求和同步请求 ACK消息 - 是Participant对提议的回复,超过半数,则Commit该提议 REVALIDATE消息

5、- 用来延长Session有效时间Participant的四个功能: 向Leader发送请求(以上四种请求) 接收Leader消息并进行处理 接收Client的请求,如果是写请求,发送给Leader进行投票 返回Client结果ZAB-并没有完全采用Paxos算法,而是使用了Zookeeper Atomic Broadst(ZAB,Zookeeper原子消息广播协议)作为数据一致性的核心算法。主备模式来保持集群中各副本之前数据的一致性 使用一个单一的主进程来接受并处理客户端的所有事务请求,并采用ZAB的原子广播协议,将服务器数据的状态并更以Proposal的形式广播到所有的副本进程上去。 =

6、同一时刻集群中只能够有一个主进程来广播服务器的进程变更,因此能够处理客户端大量的并发请求。ZAB协议的核心是定义了那些会改变Zookeeper服务器数据状态的事务请求的处理方式,即:所有事务请求都会由一个全局唯一的服务器来协调处理,也就是Leader,而余下的服务器则成为Follower;Leader负责将一个客户端事务请求转换成一个Proposal,并将该Proposal分发给集群下所有的Follower,之后就是等待Follower的反馈,一旦超过半数进行了正确的反馈,那么Leader就会再次向所有的Follower服务器分发Commit消息,要求其将前一个Proposal进行提交。两种基

7、本模式:崩溃恢复模式和消息广播模式。服务框架启动或Leader出现网络故障、重启等异常时,ZAB协议就会进入恢复模式并选举产生新的Leader,当产生新的Leader且集群中过半的机器与该Leader服务器完成状态同步之后,就会推出恢复模式。 - 进入消息广播模式:一个Leader负责消息广播,如果此时一台机器加入到集群中,就会默默的进入数据恢复模式:找到Leader所在的服务器,并进行数据同步,然后一起参与到消息广播中。类比2PC,ZAB协议的二阶段提交,移除了中断逻辑,所有的Follower要么正常反馈Leader提出的事务Proposal,要么就抛弃Leader服务器。移除终端逻辑也意味

8、着Leader获取到过半的Ack之后就开始Proposal,不需要等到所有的Follower服务器响应。消息广播:Leader会为每一个Follower分配一个单独的队列,然后将需要广播的事务Proposal依次放入到这些队列中去,并且根据FIFO策略进行发送。每一个Follower接受这个事务Proposal后,都会将其以事务日志的形式写入到本地磁盘中去,并且在成功写入后反馈给Leader服务器一个Ack响应,超过半数后,Leader就会广播一个Commit消息。同时Leader自己也会完成对事务的提交,每一个Follower在接收到Commit消息后,也会完成对事务的提交。基本特性:ZAB

9、协议规定:如果一个事务Proposal在一台机器上执行成功,那应该在所有机器上都执行成功,哪怕机器出现故障。ZXID:ZAB协议的事务编号是一个64位的数字,其中低32位是单调递增的计数器,针对客户端的每一个事务请求,Leader服务器在产生一个新的事务Proposal的时候,都会对该计数器+1;高32位则代表了Leader周期epoch的编号;每当选举产生一个新的Leader时,就会从这个Leader服务器取出其本地日志最大事务Proposal的ZXID,并从该ZXID解析出最大的epoch值,然后再对其进行+1,以此编号作为新的epoch,并将低32位置0来开始新的ZXID,同步:选择完l

10、eader之后,开始数据同步: Leader等待server连接 Participant连接leader,将最大的ZXID发送给leader Leader根据ZXID确定同步点并进行同步,同步完成后,通知Participant进入uptodate状态; Participant收到uptodate消息后,就可以开始接受client的请求。进程的状态:Leading、Following、Looking进程启动时或Leader崩溃时 - Looking选举出Leader之后,Follower的状态为Following,Leader的状态为Leading。所有节点约定在父目录GroupMembers下

11、创建临时节点,然后监听父目录节点的子节点变化消息,一旦有机器挂掉,该机器与zk的连接断开,其创建的临时目录节点被删除,所有其他机器都收到通知;对于选master,所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master即可。-VS Zookeeper配置文件位置:/sf/cfg/vs/zookeeper_conf/zoo.cfg 集群中所有机器上的zoo.cfg文件的内容都应该是一致的。dataDir目录下有myid文件,myid文件中只有一个数字,即一个Server ID;每个机器的myid文件内的数字不同。验证服务器:zkCli.sh 使用-配置文件先更新到本地,然后同步到zkzk目录结构:见Xmind文件测试点:(大集群上)-1. 基本功能测试- 集群只有一个leader- participant阈值上限- 数据同步- 卷master2. 稳定性测试- zk 服务能否被拉起- 多次重启leader节点- 重启所有节点服务- 超过半数participant离线3. 用户场景- 扩容扩容后节点角色- 替换leader/follower/observer- 离线participant, 不考虑过半情况4. 其他- 日志专项测试- 页面显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 存储

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号