单机ZK Server启动流程
2024-12-16 19:08:51 0 举报
ZK standalone启动流程
作者其他创作
大纲/内容
ZooKeeperServerMain#runFromConfig(config)
//创建Jetty监听,用于Monitor zk相关数据adminServer = AdminServerFactory.createAdminServer()
//解析zoo.cfg文件config#parse(args[0])
ZKDatabase是Zookeeper基于内存实现的数据库内部是通过DataTree进行构建的
run()
//初始化RequestProcessor链setupRequestProcessors()
//解析配置信息parseProperties(cfg)
SyncRequestProcessor
//RequestThrottler#run()requestThrottler.start()
FinalRequestProcessor
默认Zk Server是以NIO的方式进行监听和客户端数据交换的,我们更改成Netty NettyServerCnxnFactory.class.getName()
//初始化session会话管理器startSessionTracker()
NettyServerCnxnFactory#start
setZxid(zkDb.loadDataBase());
//创建了默认的5个ZNoder节点dataTree = createDataTree()
main#initializeAndRun(args)
zk server绑定2181端口bootstrap.bind(localAddress).syncUninterruptibly().channel()
NettyServerCnxnFactory#startup
QuorumPeerMain#main
FileTxnSnapLog 数据快照日志快照
if (config.getClientPortAddress() != null) {
RequestProcessor
//从文件中加载数据到内存数据库loadData();
// 加载zoo.cfg的配置信息入cfg配置cfg#load(in);
zks.setServerCnxnFactory(this)
startupWithServerState(State.RUNNING)
zkDb = new ZKDatabase(this.txnLogFactory)
RequestProcessor#processRequest
//初始化RequestProcess链zks.startup()
System.getProperty(ZOOKEEPER_SERVER_CNXN_FACTORY)
PrepRequestProcessor
ZooKeeperServerMain#main(args)
QuorumPeerConfig 成员被赋值dataDir:D:\\\\mepeng\\\\software_learn\\\\zookeeper\\\\zk-standalone\\\\datadataLogDirclientPort:2181tickTime:2000
NettyServerCnxnFactory#setZooKeeperServer(zks)
PrepRequestProcessor#run()
//ZooKeeperServer#startdatazks.startdata()
//接收请求的 submittedRequests队列ZooKeeperServer#startRequestThrottler()
start()
//创建zk server通信的NIO(或者可以配置特定的netty)cnxnFactory = ServerCnxnFactory.createFactory()
//通过反射实例化对象 NettyServerCnxnFactoryreturn serverCnxnFactory;
//FileTxnSnapLogthis.snapLog = snapLog;
收藏
收藏
0 条评论
下一页