Zookeeper 源码解读系列目录

简介

笔者写这一系列的原因是由于公司近一年半以来上了Kafka,而Kafka是严重依赖Zookeeper的。因此借助这个契机好好的研究了一番Zookeeper的源码,并且把自己的心得总结出来,给后来者一个读源码的方向吧。当然笔者只是众多普通的码农之一,在Zookeeper方面不能也不敢自称大牛,只是如同老黄牛一样吭哧吭哧的把Zookeeper源码读了数遍,留下心得而已。如果这些帖子里有错误的地方,欢迎大家指正错误,毕竟有讨论才有进步。由于Zookeeper 源码解读系列越写越多,文章内的连接已经不足以满足整理和检索这一个系列了。所以笔者决定单抽出一篇帖子来统一整理,以下就是各个篇章的链接和概要:

单机模式目录与概要

本系列完整的讲解了Zookeeper单机模式下启动,建立socket连接,数据同步,数据传输,处理器链逻辑,事件,关闭session,原生ACL验证等等源码的讲解。

  1. Zookeeper 源码解读系列, 单机模式(一)
    主要讲解:ZkCli.cmd启动后是怎么连接的,ZooKeeper原生客户端,SendThread和EventThread初识,创建NIO实例,main线程的启动,以及以Create命令为例探究ZooKeeper命令执行的过程等等源码的解析。

  2. Zookeeper 源码解读系列, 单机模式(二)
    主要讲解:探究SendThread线程,重试机制,outgoingQueue的作用,doIO方法 与 outgoingQueue的关联,pendingQueue的作用等等源码,探究了SendThread线程的完整流程。

  3. Zookeeper 源码解读系列, 单机模式(三)
    主要讲解:服务器单机模式的启动,配置参数的解析,ZooKeeperServerMain线程的启动,服务端启动的步骤,启动时加载数据,ZookeeperServer的启动等等源码解析,基本上涵盖了Zookeeper服务端启动时的连接,接收数据,加载数据的全部过程。

  4. Zookeeper 源码解读系列, 单机模式(四)
    主要讲解:请求处理器链的概念,NIOServerCnxnFactory线程,解读处理器链,PrepRequestProcessor,SyncRequestProcessor,持久化事物,打快照SnapLog,FinalRequestProcessor,更新内存等等源码的讲解。基本上,单机服务端源码的启动流程到此结束。

  5. Zookeeper 源码解读系列, 单机模式(五)
    主要讲解:EventThread客户端流程,事件监听器的注册,客户端收到事件返回后的触发机制,EventThread.run()等等源码的讲解,到此SendThread和EventThread两大客户端线程源码讲解基本结束。

  6. Zookeeper 源码解读系列, 单机模式(六)
    主要讲解:服务端读取数据的流程,triggerWatch触发事件,一个重要的Map:WatchTable,执行事件等等源码的讲解,本篇主要的源码讲解方向是:触发事件的全部流程。

  7. Zookeeper 源码解读系列, 单机模式(七)
    主要讲解:客户端Close Session,服务端Close Session,临时节点的删除,返回客户端消息等等源码的讲解,主要通过quit命令来讲解Zookeeper是如何关闭Session的。

  8. Zookeeper 源码解读系列, 单机模式(八)
    主要讲解:Zookeeper的权限操作简介,客户端中的addauth,服务端中的addauth,addauth ip,ACL的验证与设置,Zookeeper原生ACL验证的缺陷,Perms机制等等内容讲解了Zookeeper的源码的ACL机制是如何走的,以及是如何验证ACL的。

集群模式目录与概要

本系列完整的讲解了Zookeeper集群模式下启动,集群模式下socket连接,集群模式下保证数据同步,集群模式下数据交互逻辑,集群模式下处理器链逻辑,领导者选举的进行流程等等源码的讲解。

  1. Zookeeper 源码解读系列,集群模式(一)
    主要讲解:集群模式的角色,源码解析配置文件,集群验证类的构造,集群模式服务端的启动,快照里导出数据到内存,QuorumPeer.run()服务端正式启动的入口,Leader与Learner的交互,Epoch的概念和作用,Zookeeper的ACK机制等等内容讲解了服务端启动的第一步在源码里是怎样的流程。
  2. Zookeeper 源码解读系列,集群模式(二)
    主要讲解:Leader向Learner同步的数据内容来自哪里,Zxid的概念,数据同步的内容是什么,以及如何发送的数据等等内容,是Zookeeper数据同步源码讲解的第一部分。
  3. Zookeeper 源码解读系列,集群模式(三)
    主要讲解:Learner的数据处理,Leader数据何时更新完毕,Leader遇到新加入的follower会怎么处理,以及同步数据结束后Leader和Learner分别又会做什么等等内容的源码讲解。本篇也是Zookeeper数据同步源码讲解的第二部分,自此Zookeeper数据同步源码的讲解结束。
  4. Zookeeper 源码解读系列,集群模式(四)
    主要讲解:集群的初始化启动,Leader的处理器链,Follower的处理器链,Observer的处理器链的组成,集群模式下处理器的功能,Leader 处理器链的流程等等源码的解析,本篇是Zookeeper启动后初始化源码讲解的第一部分。
  5. Zookeeper 源码解读系列,集群模式(五)
    主要讲解:Follower接收Proposal的源码流程,Follower端的处理器链和Leader的处理器链的交互过程,Leader接收提议的ACK的源码流程,Follower转发写请求等等内容。本篇是Zookeeper启动后初始化源码讲解的第二部分,自此Zookeeper集群模式的大体讲解结束。
  6. Zookeeper 源码解读系列,集群模式(六)
    主要讲解:领导者选举算法理论,集群启动时领导者选举源码的流程,Vote类,底层传输类QuorumCnxManager的作用,Listener类启动Socket连接,SendWorker 和 RecvWorker的作用等等源码的讲解。本篇是讲解Zookeeper的选举过程第一部分。
  7. Zookeeper 源码解读系列,集群模式(七)
    主要讲解:FastLeaderElection的作用,WorkerSender线程的作用,WorkerReceiver线程的作用,投票收发链是什么样子,QuorumPeer类是怎么进入选举过程的,自我投票的实现,接收集群中其他机器的投票和验证等等源码的解析。本篇是讲解Zookeeper的选举过程第二部分。
  8. Zookeeper 源码解读系列,集群模式(八)
    主要讲解:选举的逻辑,选票的比较,过半验证,选举成功,服务器变更以后选举的流程,leader挂了,follower挂了,新加入了机器等等涉及到选举部分的源码讲解。本篇是讲解Zookeeper的选举过程第三部分。也是本系列的最后一篇。

知识点补遗

  1. Zookeeper 源码解读系列补漏之加载快照数据到内存
    主要讲解:加载数据的流程,服务器异常宕机后是如何保证事务完整性的代码讲解。
  2. Zookeeper-3.4.14 Win10 裸机运行(不包含命令) 教程
    主要讲解:win10能裸机够运行zk服务的操作流程
  3. Zookeeper-3.4.14 Idea 源码安装与运行 Win10手把手教程
    主要讲解:Zookeeper源码的安装以及安装过程中可能出现的问题解决。

其他

更多Java框架源码内容进入
【Spring解读系列目录】
【Apache Kafka API AdminClient系列】

猜你喜欢

转载自blog.csdn.net/Smallc0de/article/details/107424693