Zookeeper-源码分析-启动+选择群首

手机游戏开发者 2024-9-28 16:41:25 89 0 来自 中国
1.启动Socket服务绑定2181端口
1.初始化操纵 QuorumPeerMain.java 启动main方法
调用initializeAndRun()方法
2.数据加载到内存
  针对于集群方面的功能,server开头的设置项举行判定是否属于何脚色的对象存入到对应的follower大概obvservers,其他不属于在observers的对象存入到servers列表信息。 Quorumaj.java;存入全部的server节点但是不包罗observers节点最后体系会把observers对象存入servers列表,由于已经在之前放入Quorumaj对象中 作为推举的依据。
由于zk属于会持久化数据到datadir目次上面 以是会定时存储快照,故此会有一个定时任务举行定时打扫快照3.分析Zoo.cfg设置文件到集群中加载全部参数封装对象
举行判定main传入的args参数的分析过程
举行创建QuorumPeerConfig对象就是对应的读取设置文件zoo.cfg设置文件获取对应的属性值(读取方式为properties方式kv读取方式)
判定上面是否servers列表是否大于0,举行判定是否集群模式还是单机模式4.举行推举操纵
主要为哀求处理器:RequestProcessor差别的脚色有差别的哀求处理- 通过调用链模式syncRequestProcessor、commitRequestProcessor
4.1 QuorumPeer代表服务的节点抽象
它继续了ZookeeperThread对象属于一个线程,他会举行启动start方法,
loadDatabase()加载数据,通过ZKDataBase类去加载日记也就是全部节点数据信息到内存中。
ServerCnxnFactory.start()启动数据汲取客户端哀求。体系属性(-D):zookeeper.serverCnxFactory
每次汲取客户端哀求的时间去,会校验一次zkserver是否处于哀求状态。(以是是较为同等性)
然后假如没有举行设置,就至今用体系默认的NIOServerFactory去启动NIO模式的去更新同步数据信息。
startLeaderElection()开始启动领导推举功能计谋。
传输层
负责汲取和发送数据
createCnManager()方法负责初始化传输层服务功能。
创建一个监听器Listener,监听的端口为设置文件server.num=ip:服务之间同步端口:服务推举端口
主要监听为服务推举端口,以及发送到其他服务的推举端口。
队列+线程+Socket(BIO)
1.天生选票:sendWorker线程
会预先判定存在是否有存在着myid对应的sendWorker的聚集数据。会预先天生创建一个是否存在着myid对应的ArrayList<>聚集的数据信息。有一个线程去循环队列行止剃头送队列内里的数据myid对应的数据的信息2.汲取选票:recvWorker线程
一个队列生存汲取的数据信息。一个RecvWorker汲取数据信息线程实验器应用层
负责推举和计谋投票
有四种领导者推举
FastLeaderElection()
?临时未完成说明
启动团体的线程也就是实验super.run()
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 04:44, Processed in 0.158121 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表