暂时只能起到记录的作用,估计想让别人理解还有点难度。推荐博文
1、系统启动,如果命令行参数为1个且配置的Server数大于1,启动集群模式,否则启动单机模式;
2、集群模式下,启动QuorumPeer线程,然后通过join等待工作线程结束。
2.1、装载数据:从快照文件恢复快照内存树,同时处理快照之后还未处理的事务日志;
2.2、启动ServerCnxnFactory来启动一个Socket监听接收客户端请求;
2.3、启动选举,生成自己作为Leader的选票,同时生成发送、接收两个队列,并启动两个线程分别处理两个队列的数据,接收线程在超过1/2选票承认某个Leader后结束选举;
2.4、构建MBeanRegistry,构建当前节点的MBean结构;
2.5、判断节点类型,
Looking,则推动选举,发送选票,并等待其他节点选票并完成选举;
Observing,则启动与Leadinger通信,并同步Leader数据到本地;
Following/Leading,如果是本轮选票,放入recvset并判断是否可确定Leader,结束选举
否则放入outofelections并判断是否可以确定Leader,结束选举
阅读(2076) | 评论(1) | 转发(1) |