美文网首页
《源码_Zookeeper》_Zookeeper 服务端启动流程

《源码_Zookeeper》_Zookeeper 服务端启动流程

作者: tjhuey | 来源:发表于2018-11-24 01:43 被阅读30次

记录下走过的Zookeeper源码!相互学习!

服务端架构图

image.png

调试相关图

image.png image.png image.png image.png image.png image.png

debug图

服务端启动流程
>org.apache.zookeeper.server.quorum.QuorumPeerMain.main  main方法 启动 (可通过jps 或者 zkServer.sh查看)
    >org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun 模板模式
        >org.apache.zookeeper.server.quorum.QuorumPeerConfig  zoo.cfg解析
        >org.apache.zookeeper.server.DatadirCleanupManager 为新链接清理数据
        >org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig 通过配置信息启动
            >org.apache.zookeeper.server.ServerCnxnFactory.createFactory() 通过nio创建ServerCnxnFactory
            >org.apache.zookeeper.server.quorum.QuorumPeer 创建QuorumPeer
            >org.apache.zookeeper.server.persistence.FileTxnSnapLog 创建数据库管理器
            >org.apache.zookeeper.server.ZKDatabase 封装zk数据存储结构
            >org.apache.zookeeper.server.quorum.QuorumPeer.start 模板模式
                >org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase
                >org.apache.zookeeper.server.ServerCnxnFactory.start 启动ServerCnxnFactory
                    >org.apache.zookeeper.server.NIOServerCnxnFactory.run 启动ServerCnxnFactory NIO启动
                >org.apache.zookeeper.server.quorum.QuorumPeer.startLeaderElection 初始化leader选举(后面有机会详细说)
                >java.lang.Thread.start
                >org.apache.zookeeper.server.quorum.QuorumPeer.run 启动QuorumPeer
                 >org.apache.zookeeper.server.quorum.QuorumBean JMX相关监控
                 >org.apache.zookeeper.server.quorum.Election.lookForLeader 如果是looking状态 寻找leader(后面有机会详细说)

总结

整个服务端围绕QuorumPeer对象做了cfg文件解析,并创建服务端ServerSocketChannel等待,zk数据结构的生成及临时存储,选举算法,以及运行中的选举leader策略。 (具体选举策略源代码待续)

参考

官网:http://zookeeper.apache.org
书籍:从Paxos到Zookeeper
网课: 推荐 慕课网 图灵学院 谷粒学院

相关文章

网友评论

      本文标题:《源码_Zookeeper》_Zookeeper 服务端启动流程

      本文链接:https://www.haomeiwen.com/subject/jrceqqtx.html