ZooKeeper
FlyingZCC
Apache ShardingSphere Committer
GitHub: https://github.com/FlyingZC
Blog: https://flyingzc.github.io
展开
-
Zookeeper环境搭建
zk idea 代码阅读环境搭建整理之前阅读zk源码的笔记.采用 zookeeper release 版本 3.4.13zk发行版下载地址从 github 上 clone 该版本的代码.1. ant 构建 zkbuild.xml 搜索 ant-eclipse-1.0.bin.tar.bz2, 1290行修改<get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0原创 2020-12-07 22:12:47 · 156 阅读 · 0 评论 -
Zookeeper启动流程
zk启动流程启动类为 QuorumPeerMain解析 zoo.cfg 配置创建并启动 DatadirCleanupManager 用于清理过期 snapshot 和 txnlog.创建 QuorumPeer 实例并启动该线程,用于完成选举.根据 snapshot 和 txnlog 恢复 内存数据库 ZKDatabase.- QuorumPeerMain.main()- 1.创建QuorumPeerMain对象- 2.初始化 运行 main.initializeAndRun(args)原创 2020-12-07 22:42:27 · 1103 阅读 · 0 评论 -
Zookeeper选举流程
leader选举相关线程QuorumCnxManager : 管理者,包含发送 和 接收 队列.持有 listener.QuorumCnxManager.Listener : 监听 并 建立 server 之间的连接.FastLeaderElection.Messenger.SendWorker消息生产者.循环 从发送队列 queueSendMap 中取消息(出队)并发送出去.并将该消息存入 lastMessageSent 中.FastLeaderElection.Messenger.RecvWo原创 2020-12-10 22:39:21 · 294 阅读 · 0 评论 -
Zookeeper数据同步流程
zk选举完后数据同步流程Leader为每个Follower/observer都建立一个TCP长连接.LearnerHandler,即learner服务器的管理者,负责follower/observer服务器和leader服务器之间的一系列网络通信.包括数据同步,请求转发和Proposal提议的投票等.leader.lead();->leader 从磁盘中恢复数据和session列表Leader zk.loadData();->Leader 启动监听线程 LearnerCnxA原创 2020-12-13 23:11:03 · 1403 阅读 · 0 评论 -
Zookeeper Processors
processorsPrepRequestProcessor通常是请求处理链的第一个处理器.识别客户端请求是否是事务请求.对于事务请求,做预处理,诸如 创建请求事务头,事务体,会话检查,ACL检查 和 版本检查 等.ProposalRequestProcessorleader 服务器的事务投票处理器,也是 leader 服务器事务处理流程的发起者.对于 非事务请求,它会直接将请求流转到 CommitProcessor 处理器,不再做其他处理.对于 事务请求,除了将请求交给CommitP原创 2020-12-15 23:00:43 · 257 阅读 · 1 评论 -
Zookeeper事务日志,快照
ZKDataBase结构ZKDataBase(zk内存数据库)– sessionWithTimeouts(zk所有会话 会话超时时间记录器)– DataTree存储– 事务日志ZKDatabase会定时向磁盘dump快照数据,在zk启动时通过磁盘上的事务日志 和 快照文件 恢复 一个完整的内存数据库事务日志dataLogDir文件大小都是64MB文件名 log.xxxxxx为事务id : zxid, 且 为写入该事务文件第一条事务记录的zxid.zxid由两部分组成: 高32位 为原创 2020-12-20 23:05:49 · 637 阅读 · 0 评论 -
Zookeeper Watcher机制
zk watcher机制原创 2019-11-05 20:02:30 · 236 阅读 · 0 评论 -
zk实现分布式锁
zk实现分布式锁zk实现分布式锁的两种方式如果要自己通过 zookeeper 的原生 api 实现一个分布式独占锁的话,有两种方式:方式1: 创建临时节点,创建失败的client注册watcher所有需要获取锁的 client 都尝试到 zk 上创建一个临时节点.创建成功则表示成功获取锁;若创建失败,则对这个节点注册 watcher.若获得锁的 client 释放锁(自己 delete ...原创 2019-12-12 23:25:27 · 456 阅读 · 0 评论 -
常用的 Zookeeper 命令
当 zk 出现问题时,可以进入 zookeeper 所在 bin目录,启动zk命令行工具进行相关运维操作。原创 2023-12-20 07:00:00 · 382 阅读 · 0 评论