:
每个Server发出一个投票,投票内容为: Server的myid和其对应的ZXID,默认Server就是它自己
接收来自各个服务器的投票,每个服务器都会接收来自其他服务器的投票,会做一些前置校验:...,在文件创建之初就向操作系统分配一个很大的磁盘块,默认是64MB,一旦分配的文件空间不足4KB,将会再次预分配.目的是避免磁盘Seek的频率,提高磁盘I/O效率
事务消息包括事务头和事务体,写文件之前需要分别对事务头和事务体序列化...,然后根据序列化之后的字节数组计算该消息的CheckSum
写入事务日志文件流
刷入磁盘
数据快照
数据快照用于记录ZK服务器上某一时刻的全量内存数据内容,并将其写入到磁盘文件中
文件名代表本次数据快照开始时刻的服务器最新...和会话信息
生成数据快照文件名,根据当前已提交的最大ZXID来创建数据快照文件名
序列化之后写入数据快照文件
启动初始化
初始化的目的在于将存储在磁盘上的数据加载到ZK服务器内存中
初始化ZKDatabase...逐个的意思是前一个解析失败,就会接着解析下一个,如果前一个解析成功,后面的就不管了
根据数据快照获取最新的ZXID
根据事务日志文件处理增量的数据,即从事务日志文件中获取最新ZXID之后提交的事务
再将从事务日志文件中解析出的事务应用到内存中