摘要: 本文将从leader处理器入手,详细分析node的增删改查流程及监听器原理。 回顾数据读写流程 leader ZookeeperServer.processPacket封装Request并提交给业务处理器 LeaderRequestProcessor做本地事务升级 PrepRequestProces 阅读全文
posted @ 2024-03-11 09:25 用户不存在! 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 在zookeeper中,follower也可以接收客户端连接,处理客户端请求,本文将分析follower处理客户端请求的流程: 读请求处理 写请求转发与响应 follower接收转发客户端请求 网络层接收客户端数据包 leader、follower都会启动ServerCnxnFactory组件,用来 阅读全文
posted @ 2024-02-26 08:38 用户不存在! 阅读(176) 评论(0) 推荐(1) 编辑
摘要: ServerCnxnFactory 用于接收客户端连接、管理客户端session、处理客户端请求。 ServerCnxn抽象类 代表一个客户端连接对象: 从网络读写数据 数据编解码 将请求转发给上层组件或者从上层组件接收响应 管理连接状态,比如:enableRecv、sessionTimeout、s 阅读全文
posted @ 2024-02-19 10:41 用户不存在! 阅读(256) 评论(0) 推荐(1) 编辑
摘要: Leader 构造方法 public Leader(QuorumPeer self, LeaderZooKeeperServer zk) throws IOException { this.self = self; this.proposalStats = new BufferStats(); // 阅读全文
posted @ 2024-01-30 13:06 用户不存在! 阅读(56) 评论(0) 推荐(0) 编辑
摘要: ZooKeeperServer 实现了单机版zookeeper服务端功能,子类实现了更加丰富的分布式集群功能: ZooKeeperServer |-- QuorumZooKeeperServer |-- LeaderZooKeeperServer |-- LearnerZooKeeperServer 阅读全文
posted @ 2024-01-22 12:19 用户不存在! 阅读(184) 评论(0) 推荐(2) 编辑
摘要: 本文详细分析一下zookeeper的数据存储。 ZKDatabase 维护zookeeper服务器内存数据库,包括session、dataTree和committedlog数据,从磁盘读取日志和快照后启动。 关键字段 // 数据节点树 protected DataTree dataTree; pro 阅读全文
posted @ 2024-01-09 00:12 用户不存在! 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 在"zookeeper源码(03)集群启动流程"中介绍了leader选举的入口,本文将详细分析leader选举组件和流程。 leader选举流程(重要) quorumPeer的start阶段使用startLeaderElection()方法启动选举 LOOKING状态,投自己一票 createEle 阅读全文
posted @ 2023-11-07 13:23 用户不存在! 阅读(437) 评论(0) 推荐(1) 编辑
摘要: 本文将从启动类开始详细分析zookeeper的启动流程: 加载配置的过程 集群启动过程 单机版启动过程 启动类 org.apache.zookeeper.server.quorum.QuorumPeerMain类。 用于启动zookeeper服务,第一个参数用来指定配置文件,配置文件properti 阅读全文
posted @ 2023-10-30 13:01 用户不存在! 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 本文介绍一下zookeeper-3.9.0源码下载、编译及本地启动。 下载源码 git clone https://gitee.com/apache/zookeeper.git cd zookeeper git checkout release-3.9.0 git checkout -b relea 阅读全文
posted @ 2023-10-23 10:52 用户不存在! 阅读(126) 评论(0) 推荐(0) 编辑
摘要: SpringCloud工程可以使用Nacos作为注册中心和配置中心,配置和使用非常简单,本文将简单介绍使用方式,并分析其实现方式。 SpringCloud工程集成Nacos SpringCloud工程使用Nacos非常简单,只需要引入依赖、编写配置参数、在启动类上添加注解即可。 引入依赖 <depe 阅读全文
posted @ 2023-10-16 10:37 用户不存在! 阅读(116) 评论(0) 推荐(0) 编辑