zookeeper存储之实现分析
zookeeper 存储基本都是在SyncRequestProcessor 单个线程完成的
服务器包含两个重要日志:快照以及事务日志
服务器使用单线程来处理所有请求(和存储相关)
服务器选择了合适的时机产生快照以及roll事务日志,避免阻塞
和存储(写磁盘)相关的方法都是同步的(synchronized),虽然一个线程在操作
如果服务器崩溃了,日志还没有flush掉,数据会丢失(至少单机的时候是这样)
所有的读请求直接从内存走和磁盘无关,但响应速度会受一些影响见上面的3.0)
接下来的几个问题还需跟踪
为什么会同时加载多个snapshot? 1个最近的snapshot不就够了?
sessiontrack的机制?ZKDatabase中的sessionsWithTimeouts与sessiontrack的关系
集群环境下又会有什么变化?