![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
zookeeper源码分析
文章平均质量分 70
uestc-leon
我想做一个强者
展开
-
zookeeper leader和follower启动期交互过程
leader和follower启动期交互过程包括如下步骤。1.创建Leader服务器和Follower服务器完成leader选举后,各服务器会根据自己角色创建相应的服务器实例,并开始进入各自角色的主流程。代码位置:QuorumPeer.javaleader case LEADING: LOG.info("LEADING");原创 2017-07-12 19:39:02 · 1492 阅读 · 0 评论 -
zookeeper leader和learner的数据同步
数据同步在leader和follower启动期交互过程中,我们分析到整个集群完成leader选举后,learner会向leader服务器进行注册,当过半的learner服务器向leader完成注册后,就进入数据同步环节。简单讲,数据同步过程就是leader服务器将那些没有在learner服务器上提交过的事务请求同步给learner服务器。获取Learner状态在注册learner的最后阶段,lear原创 2017-07-13 09:39:22 · 4304 阅读 · 0 评论 -
CommitProcessor事务提交处理器
这个processor主要负责将已经完成本机submit的request和已经在集群中达成commit(即收到过半follower的proposal ack)的request匹配,并将匹配后的request交给nextProcessor(对于leader来说是ToBeAppliedRequestProcessor)处理。这是个异步处理的processor,它有两个入口:首先对两个队列进行重点介绍:原创 2017-08-16 10:05:29 · 990 阅读 · 0 评论 -
ToBeAppliedRequestProcessor
ToBeAppliedRequestProcessor处理器是Leader的一个内部类,主要是为了维护Leader类的toBeApplied队列,专门用来存储那些已经被 CommitProcessor处理过的可被提交的(已经完成投票)proposal。但是这些proposal还没有应用到本机的内存中(这个工作是由FinalRequestProcessor来完成的)CommitProcessor的pr原创 2017-08-16 10:33:42 · 452 阅读 · 0 评论 -
FinalRequestProcessor
FinalRequestProcessor是责任链中的最后一个请求处理器,负责把已经commit的写操作(事务)应用到内存数据库中去,对于读操作则从本机中读取数据并返回给client。创建客户端请求的响应。FinalRequestProcessor是一个同步处理的processor,主要的处理逻辑就在方法processRequest中:如果request.hdr != null,则表明reques原创 2017-08-16 14:46:18 · 440 阅读 · 0 评论 -
zookeeper服务器初始化的过程
在Zookeeper服务器启动期间,首先会进行数据初始化工作,用于将存储在磁盘上的数据文件加载到Zookeeper服务器内存中。初始化流程整体流程图如下: 数据的初始化工作是从磁盘上加载数据的过程,主要包括了从快照文件中加载快照数据和根据事务日志进行数据修正两个过程。1.初始化FileTxnSnapLog。FileTxnSnapLog是Zookeeper事务日志和快照数据访问层,用于衔接上层业原创 2017-08-16 15:57:23 · 1963 阅读 · 2 评论 -
SyncRequestProcessor事务日志记录处理器
概括SyncRequestProcessor主要用来将事务请求记录到事务日志文件中,同时还会在合适时候触发zookeeper进行数据快照。SyncRequestProcessor是个异步处理的processor,启动后会有一个线程异步获取队列queuedRequests中的request并处理SyncRequestProcessorr负责把事务请求(写request)持久化到本地磁盘,为了提高写磁盘转载 2017-08-13 15:22:21 · 742 阅读 · 0 评论 -
ZooKeeper的一致性算法赏析
1 ZAB介绍ZAB协议全称就是ZooKeeper Atomic Broadcast protocol,是ZooKeeper用来实现一致性的算法,分成如下4个阶段。先来解释下部分名词electionEpoch:每执行一次leader选举,electionEpoch就会自增,用来标记leader选举的轮次peerEpoch:每次leader选举完成之后,都会选举出一个转载 2017-11-07 17:48:51 · 4742 阅读 · 0 评论 -
zookeeper leader选举 源码分析
QuorumCnxManager:网络IO每台服务器启动的时候,都会启动一个QuorumCnxManager,负责各台服务器之间的leader选举过程中的网络通信。消息队列QuorumCnxManager这个类内部维护一系列的队列,用于保存接收到的,待发送的消息,以及消息的发送器。除了接收队列外,这里提到的所有队列都按SID分组形成队列集合。/*消息接收队列只有一个*/public final A原创 2017-07-12 11:39:17 · 793 阅读 · 0 评论