随笔分类 - SpringCloud组件 / zookeeper源码分析
zookeeper源码分析
摘要:本文将从leader处理器入手,详细分析node的增删改查流程及监听器原理。 回顾数据读写流程 leader ZookeeperServer.processPacket封装Request并提交给业务处理器 LeaderRequestProcessor做本地事务升级 PrepRequestProces
阅读全文
摘要:在zookeeper中,follower也可以接收客户端连接,处理客户端请求,本文将分析follower处理客户端请求的流程: 读请求处理 写请求转发与响应 follower接收转发客户端请求 网络层接收客户端数据包 leader、follower都会启动ServerCnxnFactory组件,用来
阅读全文
摘要:ServerCnxnFactory 用于接收客户端连接、管理客户端session、处理客户端请求。 ServerCnxn抽象类 代表一个客户端连接对象: 从网络读写数据 数据编解码 将请求转发给上层组件或者从上层组件接收响应 管理连接状态,比如:enableRecv、sessionTimeout、s
阅读全文
摘要:Leader 构造方法 public Leader(QuorumPeer self, LeaderZooKeeperServer zk) throws IOException { this.self = self; this.proposalStats = new BufferStats(); //
阅读全文
摘要:ZooKeeperServer 实现了单机版zookeeper服务端功能,子类实现了更加丰富的分布式集群功能: ZooKeeperServer |-- QuorumZooKeeperServer |-- LeaderZooKeeperServer |-- LearnerZooKeeperServer
阅读全文
摘要:本文详细分析一下zookeeper的数据存储。 ZKDatabase 维护zookeeper服务器内存数据库,包括session、dataTree和committedlog数据,从磁盘读取日志和快照后启动。 关键字段 // 数据节点树 protected DataTree dataTree; pro
阅读全文
摘要:在"zookeeper源码(03)集群启动流程"中介绍了leader选举的入口,本文将详细分析leader选举组件和流程。 leader选举流程(重要) quorumPeer的start阶段使用startLeaderElection()方法启动选举 LOOKING状态,投自己一票 createEle
阅读全文
摘要:本文将从启动类开始详细分析zookeeper的启动流程: 加载配置的过程 集群启动过程 单机版启动过程 启动类 org.apache.zookeeper.server.quorum.QuorumPeerMain类。 用于启动zookeeper服务,第一个参数用来指定配置文件,配置文件properti
阅读全文
摘要:本文介绍一下zookeeper-3.9.0源码下载、编译及本地启动。 下载源码 git clone https://gitee.com/apache/zookeeper.git cd zookeeper git checkout release-3.9.0 git checkout -b relea
阅读全文
摘要:本文介绍一下zookeeper-3.5.7集群安装。 解压安装 tar zxf apache-zookeeper-3.5.7-bin.tar.gz 创建数据、日志目录: mv apache-zookeeper-3.5.7-bin /app/zookeeper-3.5.7 cd /app/zookee
阅读全文