Zookeeper源码分析(7)- SyncRequestProcessor
来源:互联网 发布:知乎 保银投资 编辑:程序博客网 时间:2024/05/16 11:35
这是个异步处理的processor,启动后会有一个线程异步获取队列中的request并处理
这个 processor负责把写request持久化到本地磁盘,为了提高写磁盘的效率,这里使用的是缓冲写,但是会周期性(1000个request)的调用flush操作,flush之后request已经确保写到磁盘了,这时会把请求传给AckRequestProcessor继续处理
这个processor除了会定期的把request持久化到本地磁盘,同时他还要维护本机的txnlog和snapshot,这里的基本逻辑是:
- 每隔snapCount/2个request会重新生成一个snapshot并滚动一次txnlog,同时为了避免所有的zookeeper server在同一个时间生成snapshot和滚动日志,这里会再加上一个随机数,snapCount的默认值是10w个request
生成镜像是通过扫描保存在内存中的Datatree和sessionTracker来把状态持久化的,为了提高server的性能,在生成snapshot的时候并未对Datatree和sessionTracker加锁,这里就涉及到保存状态一致的问题,这个问题在zookeeper的论文里就有很好的解释
0 0
- Zookeeper源码分析(7)- SyncRequestProcessor
- ZooKeeper源码分析:Log和Snapshot持久化(SyncRequestProcessor类)
- Zookeeper源码分析(1)- Zookeeper的启动流程
- Zookeeper源码分析(2)- zookeeper的选举流程
- Zookeeper源码分析(一)-Zookeeper启动过程
- Zookeeper源码分析(五)-Zookeeper选举实例流程
- Zookeeper源码分析(5)- PrepRequestProcessor
- Zookeeper源码分析(6)- ProposalRequestProcessor
- Zookeeper源码分析(8)- CommitProcessor
- Zookeeper源码分析(9)- ToBeAppliedRequestProcessor
- Zookeeper源码分析(10)- FinalRequestProcessor
- Zookeeper源码分析(11)- FollowerRequestProcessor
- Zookeeper源码分析(二)-ZKDatabase.loadDataBase()
- 【Zookeeper】源码分析之服务器(三)
- 【Zookeeper】源码分析之服务器(三)
- 【Zookeeper】源码分析之服务器(二)
- 【Zookeeper】源码分析之服务器(一)
- 【Zookeeper】源码分析之服务器(三)
- KVM虚拟机关闭
- Sed学习笔记
- 关于避开轮询方法的方法
- oracle中rollup和cube使用
- Spring JNDI之Tomcat配置
- Zookeeper源码分析(7)- SyncRequestProcessor
- NPOI 操作Excel
- JAVA内存泄露、溢出的检查方法、工具介绍
- Flex 中给LineChart的节点上显示数值
- JDK源码阅读之List和AbstractSequentialList
- 这几天写的连连看的思路和算法总结
- linux杂七杂八
- leetcode 总结
- 鸟哥的Linux私房菜 基础学习篇读书笔记(2):鸟哥的Linux学习建议