linux网站服务器配置,网站没有织梦后台,服装网站建设准备,阜宁专业做网站的公司ZooKeeper服务器的启动#xff0c;大体可以分为以下五个主要步骤#xff1a;配置文件解析、初始化数据管理器、初始化网络I/O管理器、数据恢复和对外服务。下图所示是单机版ZooKeeper服务器的启动流程图。 预启动
预启动的步骤如下。
(1)统一由QuorumPeerMain作为启动类。 …ZooKeeper服务器的启动大体可以分为以下五个主要步骤配置文件解析、初始化数据管理器、初始化网络I/O管理器、数据恢复和对外服务。下图所示是单机版ZooKeeper服务器的启动流程图。 预启动
预启动的步骤如下。
(1)统一由QuorumPeerMain作为启动类。
无论是单机版还是集群模式启动ZooKeeper服务器在zkServer.cmd和zkServer.sh两个脚本中都配置了使用org.apache.zookeeper.server.quorum.QuorumPeerMain作为启动入口类。
(2)解析配置文件zoo.cfg。
ZooKeeper首先会进行配置文件的解析配置文件的解析其实就是对zoo.cfg文件的解析。该文件配置了ZooKeeper运行时的基本参数包括tickTime、dataDir和clientPort等参数。关于ZooKeeper参数配置。
(3)创建并启动历史文件清理器DatadirCleanupManager。
从3.4.0版本开始ZooKeeper 增加了自动清理历史数据文件的机制包括对事务日志和快照数据文件进行定时清理。
(4)判断当前是集群模式还是单机模式的启动。
ZooKeeper根据步骤2中解析出的集群服务器地址列表来判断当前是集群模式还是单机模式如果是单机模式那么就委托给ZooKeeperServerMain进行启动处理。
(5)再次进行配置文件zoo.cfg的解析。
(6)创建服务器实例ZooKeeperServer。
org.apache.zookeeper.server.ZooKeeperServer是单机版ZooKeeper服务端最为核心的实体类。ZooKeeper服务器首先会进行服务器实例的创建接下去的步骤则都是对该服务器实例的初始化工作包括连接器、内存数据库和请求处理器等组件的初始化。 初始化
初始化的步骤如下。
(1)创建服务器统计器ServerStats。
ServerStats是ZooKeeper服务器运行时的统计器包含了最基本的运行时信息如下表所示。 属性 说明 packetsSent 从ZooKeeper启动开始或是最近一次重置服务端统计信息之后服务端向客户端发送的响应包次数 packetsReceived 从ZooKeeper启动开始或是最近一次重置服务端统计信息之后服务端接收到的来自客户端的请求包次数 maxLatency minLatency totalLatency 从ZooKeeper启动开始或是最近一次重置服务端统计信息之后服务端请求处理的最大延时、最小延时以及总延时 count 从ZooKeeper启动开始或是最近一次重置服务端统计信息之后服务端处理的客户端请求总次数 (2)创建ZooKeeper数据管理器FileTxnSnapLog。
FileTxnSnapLog是ZooKeeper上层服务器和底层数据存储之间的对接层提供了一系列操作数据文件的接口包括事务日志文件和快照数据文件。ZooKeeper根据zoo.cfg文件中解析出的快照数据目录dataDir和事务日志目录datalogDir来创建FileTxnSnapLog。 (3)设置服务器tickTime和会话超时时间限制。 (4)创建ServerCnxnFactory。
在早期版本中ZooKeeper都是自己实现NIO框架从3.4.0版本开始引入了Netty。读者可以通过配置系统属性zookeeper. serverCnxnFactory来指定使用ZooKeeper自己实现的NIO还是使用Netty框架来作为ZooKeeper服务端网络连接工厂。 (5)初始化ServerCnxnFactory。
ZooKeeper首先会初始化一个Thread作为整个ServerCnxnFactory的主线程然后再初始化NIO服务器。 (6)启动ServerCnxnFactory主线程。
启动步骤5中已经初始化的主线程ServerCnxnFactory的主逻辑(run方法)。需要注意的一点是虽然这里ZooKeeper的NIO服务器已经对外开放端口客户端能够访问到ZooKeeper的客户端服务端口2181但是此时ZooKeeper服务器是无法正常处理客户端请求的。 (7)恢复本地数据。
每次在ZooKeeper启动的时候都需要从本地快照数据文件和事务日志文件中进行数据恢复。ZooKeeper的本地数据恢复比较复杂。 (8)创建并启动会话管理器。
在ZooKeeper启动阶段会创建一个会话管理器SessionTracker。SessionTracker主要负责ZooKeeper服务端的会话管理。创建SessionTracker的时候会初始化expirationInterval.nextExpirationTime和sessionsWithTimeout (用于保存每个会话的超时时间)同时还会计算出一个初始化的sessionID。
SessionTracker初始化完毕后ZooKeeper就会立即开始会话管理器的会话超时检查。 (9)初始化ZooKeeper的请求处理链。
ZooKeeper的请求处理方式是典型的责任链模式的实现在ZooKeeper服务器上会有多个请求处理器依次来处理一个客户端请求。在服务器启动的时候会将这些请求处理器串联起来形成一个请求处理链。单机版服务器的请求处理链主要包括PrepRequestProcessor、SyncRequestProcessor和FinalRequestProcessor三个请求处理器。 (10)注册JMX服务。
ZooKeeper会将服务器运行时的一些信息以JMX的方式暴露给外部。 (11)注册ZooKeeper服务器实例。
在步骤6中ZooKeeper已经将ServerCnxnFactory主线程启动但是同时我们提到此时ZooKeeper依旧无法处理客户端请求原因就是此时网络层尚不能够访问ZooKeeper服务器实例。在经过后续步骤的初始化后ZooKeeper服务器实例已经初始化完毕只需要注册给ServerCnxnFactory即可之后ZooKeeper就可以对外提供正常的服务了。 至此单机版的ZooKeeper服务器启动完毕。