ZK单机模式启动流程
2021-09-15 22:53:02 0 举报
zookeeper单机模式下启动流程
作者其他创作
大纲/内容
结束
否
execute
是
shutdownLatch.await();阻塞主线程
selectorThreads
socket
工作原理图
启动ZK服务startup
abstract ServerCnxnFactory.startup()两个类会继承它,默认会以NIO的方式启动可以看到调用前创建的方法cnxnFactory = ServerCnxnFactory.createFactory();
启动ZK和JVM监控
client
每一个连接过来,将连接托付给每一个selector
workerPool创建工作线程池List<ExecutorService>线程为newFixedThreadPool
start();
将所有的连接事件放入一个个的线程池当中,处理客户端的读写事件
startServer是否需要启动和初始化ZKDataTree
workerPool
List<ExecutorService>
是否启动集群模式
NIOServerCnxnFactory
Server
QuorumPeerMain
expirerThread
startup1、启动session会话2、初始化请求处理器链3、启动请求限流器等等
集群模式启动
ServerConfig读取配置
initializeAndRun
handleIO()将每selector当中的连接放入工作线程池
acceptThread专门接收客户端连接doAccept()
shutdown优雅停机
startdata初始化dataTree,恢复dataTree数据(快照+磁盘log)
DatadirCleanupManager定时清除快照和日志
ZooKeeperServerMain
expirerThread开启一个线程,定时关闭超时连接
setZooKeeperServer
NettyServerCnxnFactory
入口QuorumPeerMain.main()
开始
acceptThread
启动Zk之前会创建一个CountDownLatch(1)在ZK中服务全部都是用其他用户线程维护的,主线程不被停止其他的用户线程才能够工作下去。这个会牵扯到一个ZK优雅停止
newFixedThreadPool
ZooKeeperServerMain.main(args)单机模式启动
containerManager启动容器节点
0 条评论
下一页