当前位置: 首页 > 网络应用技术

Zookeeper源代码9群集启动组件组成,启动过程源代码分析

时间:2023-03-08 00:53:57 网络应用技术

  欢迎大家注意github.com/hsfxuebao。我希望这对每个人都会有所帮助。如果您认为有可能

  从本文的开头,已经分析了ZK集群相关原理的源代码结构。先前的文章已经分析了服务器和客户端的交互式过程和主要源代码分析。

  关于ZK群集的关键点个人认为有五个点:

  因此,接下来的几篇文章将从这五个方面分析ZK群集。本文将仅分析第一个要点:群集的基本结构,分析ZK群集的最基本组成部分,并将其关系组成再次奠定基础。此外,本文将简要分析该群体的简短过程。群集开始 - UP类和配置文件的一般参数。但是,本文将不会分析选举成功后的选举过程和广播的详细信息,然后仔细分析以下内容。

  注意:本文基于ZK版本3.7分析。

  启动过程中的基本组件图:

  从图中,有十个基本组件,但是只有六个组件实际上是关键效果。接下来,详细介绍了这些基本组件的功能和关系:

  起始图表如下:

  上图是涉及基本组件的流程图。从上图,您可能可以查看重要组件何时初始化。接下来,说明每个步骤的细节:

  启动过程完成后ZK群集的开始,然后分析是选举过程。这个过程非常有趣且复杂。随后的文章将仔细分析。

  datadir存储快照文件快照目录。默认情况下,在此处也存储了交易日志。建议同时配置参数数据元素,而事务日志的写作性能直接影响ZK Performance DatalOgDir TrassAction log的输出目录。尝试为事务日志的输出配置单独的磁盘或悬挂点,这将大大改善ZK Performance客户端客户端客户端以连接服务器端口,即外部服务端口。通常,将其设置为2181 client porthaddress,用于多NETWORK CARD计算机。east IP指定不同的监视端口。默认情况是所有IP监视器中的时间单元,用于收听客户端指定的端口ticktime zk。基于此时间单元,以及MaxClientCNXS单个客户端与整数配置的整数配置的单个服务器之间的连接数量的限制是IP级别。不限制MinsessionTimeTime会话时间的最小限制。如果客户端集的超时不在此范围内,则将被迫以最大或最小的maxSactimeout会话设置。它将被强行设置为最大或最小Initlimit关注者。在启动过程中,所有最新数据将从领导者同步,然后您可以确定外部服务的起始状态。领导者允许追随者在最初的Synclimit操作期间完成此工作。在操作操作期间,Leader负责与ZK群集中的所有机器进行通信。例如,通过一些心跳检测机制来检测机器的生存状态。如果领导者在Synclimit之后具有心跳套件,并且没有收到关注者的回应,那么该追随者不再在线。选择领导者选举算法,“ 0” 对应于基于UDP的原始版本“ 1”对应于UDP的基于UDP的身份验证版本,“ 2”对应于使用基于UDP的Authentication的快速领导者选举“ 3”版本对应于快速领导者选举 -基于默认的3个QuorumListeneNonallips,该参数设置为true,Zookeeper Server将收听所有可用于所有可用IP地址的连接。他将影响ZAB协议和快速领导者选举协议。错误的pertype群集,观察者或参与者同步与参与者相同。观察者现在默认将磁盘上的事务日志和数据快照编写,当服务器重新启动时,这将减少观察者的恢复时间。将其值设置为“ false”以禁用此功能。默认值是“ true”自动启动。.purgeinterval ZK提供了自动清洁事务日志和快照文件的功能。type server.sid2 =主机:端口:electionport server.sid3 =主机:端口配置服务器信息,仅以下三种配置方法,sid1是机器的机器'Snumber,通常配置为整数,端口是用于配置配置的端口集群中的信息和集群中的通信信息。EpleaTyPort是配置领导者时使用的端口。类型的类型是其他ConfigurationZookeeper。前缀存储在Java的系统环境对象中。如果手动配置以下测试,则系统变量将具有Zookeeper.test属性。接下来,一个简单的ZK群集开始源代码分析。运行的分析, 选举和广播同步将留给接下来的几篇文章。总体流程图如下:

  Zookeeper服务的启动命令是。

  zkserver.sh启动脚本实际执行内容是:

  因此,程序的入口是Quorumpeermain.java类,它开始群集。

  源代码的关键部分如下:

  Quorumpeermain的角色非常简单。调用配置分析类阅读和解析配置,并启动相关的群集组件。

  源代码如下:

  仅引入关键部分,例如特定分析逻辑很简单,您可以理解源代码。

  源代码如下:

  这次仅分析启动过程。将来将分析特定组件的操作。

  源代码如下:

  源代码如下:

  此时,此时的相关组件源分析在这里。此源代码分析只是启动过程中重要组件和配置文件分析的最基本解释。只有在分析其过程时才能分析组件。

  Zookeeper 3.7版本GitHub源代码注释分析

  ## ZK源代码分析系列

  Zookeeper原理和源代码学习系列Zookeeper学习系列Zookeeper源代码系列

  原始:https://juejin.cn/post/7100170948036263966