欢迎大家注意github.com/hsfxuebao。我希望这对每个人都会有所帮助。如果您认为有可能
在上一篇文章中,已经分析了验证的主要过程和沟通结构。接下来,我将在建立通信结构的源代码级别中分析ZK群集的操作过程。理解,否则很容易分析我的一半思想。本文仅分析创建集群通信对的过程,并且在分析之前,特定的选举源代码将留给下一篇文章。
本文是上一篇文章的补充。建议在查看源代码分析时查看上一篇文章的流程图。跳出代码更容易知道该过程中的角色。FastleDerelect)算法集群选举通信原理和过程结构(类解释)
注意:本文基于ZK版本3.7分析。
源代码分析步骤与以前不同。因为ZK集群选举涉及三个角色:领导者,追随者和观察者。三个不同字符的源代码过程是不同的。因此,从选举过程的开始的通用过程开始,当每台计算机都有不同的过程时,对两个字符进行了源代码过程分析,请分别分析。观察者忽略了源代码分析,因为它不参加选举。
源代码分析假设ZK群集中有三台机器:
接下来,这三台机器将被用作逐渐分析ZK的选举过程的示例。构建了集群内部通信的源代码分析的总体流程:
在阅读了上一篇文章的首发小组价格和过程后,您可以知道ZK群集中的每台机器都将具有Quorumpeer群集对象。该对象是一个线程对象,可以监视机器的状态:1。选举过程状态;22.确认角色在总体规划中扮演角色后的数据同步过程状态。关键源代码如下:
无论是刚开始还是上一代的领导者,新领导者都将选举产生,并且在选举过程开始时的每台机器状态,并且将执行fastlederelectection选举对象的公共过程。该对象的公共过程。关键源代码如下:
如前所述,FLE对象将将投票信息放入Sendqueue集合中,该集合是FLE OBOCT和WORKERSENDER对象的通信集合。Next,查看Workerersender执行这些消息以执行操作:
将消息转换为消息字节发送的套接字后,现在面临一个问题:这是该机器未连接到其他机器简历以与其他机器简历通信的机器,而Quorumcnxmanager的职责是管理连接。它将帮助我们帮助我们帮助我们。解决此问题。关键源代码如下:
在此过程之后,三台机器之间的通信如下图所示:
在上面的四个过程中,在连接在Qinorumcnxmanager对象中建立连接的SID机器之后,已经创建了通信对,以形成上述图标的通信对。如下:
在这一点上,群集中每台机器的通信如下:下面:
在这些过程之后,这三台机器与群集中的每台机器建立了通信对,他们已经可以互相发送接收选举新闻。接下来,他们将分析选举过程。
Zookeeper 3.7版本GitHub源代码注释分析
## ZK源代码分析系列
Zookeeper原理和源代码学习系列Zookeeper学习系列Zookeeper源代码系列
原始:https://juejin.cn/post/7100494637638352910