zookeeper服务端
来源:互联网 发布:大型网络动作竞技游戏 编辑:程序博客网 时间:2024/05/29 19:31
Zookeeper服务器的启动过程,大致可以分为以下五个步骤
1.配置文件解析。
2.初始化数据管理器。
3.初始化网络IO管理器。
4.数据恢复。
5.对外服务。
单机版服务器启动
1.预启动
1.1 统一由QuorumPeeroMain作为启动类。无论单机或集群,在zkServer.cmd和zkServer.sh中都配置了QuorumPeerMain作为启动入口类。
1.2 解析配置文件zoo.cfg。zoo.cfg配置运行时的基本参数,如tickTime、dataDir、clientPort等参数。
1.3 创建并启动历史文件清理器DatadirCleanupManager。对事务日志和快照文件进行定时清理。
1.4 判断当前是集群模式还是单机模式。若是单机模式,则委托给ZookeeperServerMain进程启动。
1.5 再次进行配置文件zoo.cfg的解析。
1.6 创建服务器实例ZooKeeperServer。Zookeeper服务器首先会进行服务器实例的创建,然后对该服务器实例进行初始化,包括连接器、内存数据库、请求处理器等组件的初始化。
2.初始化
2.1 创建服务器统计器ServerStats。
2.2 创建Zookeeper数据管理器FileTxnSnapLog,FileTxnSnapLog是Zookeeper上层服务器和底层数据存储之间的对接层,提供了一系列操作数据文件的接口,如事务日志文件和快照数据文件。Zookeeper根据zoo.cfg文件中解析出的快照数据目录dataDir和事务日志目录dataLogDir来创建FileTxnSnapLog。
2.3 设置服务器tickTime和会话超时时暗限制。
2.4 创建ServerCnxnFactory。通过配置系统属性zookeeper.serverCnxnFactory来指定使用Zookeeper自己实现的NIO还是使用Netty框架作为Zookeeper服务端网络连接工厂。
2.5 初始化ServerCnxnFactory。Zookeeper会初始化Thread作为ServerCnxnFactory的主线程,然后再初始化NIO服务器。
2.6 启动ServerCnxnFactory主线程。进入Thread的run方法,此时服务端还不能处理客户端请求。
2.7 恢复本地数据。启动时,需要从本地快照数据文件和事务日志文件进行数据恢复。
2.8 创建并启动会话管理器。Zookeeper会创建会话管理器SessionTracker进行会话管理。
2.9 初始化Zookeeper的请求处理链。Zookeeper请求处理方式为责任链模式的实现。会有多个请求处理器依次处理一个客户请求,在服务器启动时,会将这些请求处理器串联成一个请求处理链。
2.10 注册JMX服务。Zookeeper会将服务器运行时的一些信息以JMX的方式暴露给外部。
2.11 注册Zookeeper服务器实例。将Zookeeper服务器实例注册给ServerCnxnFactory,之后Zookeeper就可以对外供服务。
集群服务器启动
- zookeeper服务端
- Zookeeper服务端
- Zookeeper服务端架构
- ZooKeeper服务端启动-单机
- Zookeeper服务端启动
- 关于安装Zookeeper 服务端问题解决
- Zookeeper应用:服务端上下线
- 【Zookeeper】——服务端集群
- ZooKeeper服务端线程模型分析
- zookeeper客户端和服务端交互分析
- zookeeper 6 : 服务端存储设计与实现
- dubbo之客户端和服务端采用zookeeper技术进行通信
- Zookeeper(十一)服务端处理,客户端回调
- Zookeeper源码解析——服务端启动流程
- 服务端
- 服务端
- 服务端
- zookeeper源码阅读分析笔记--客户端服务端通信机制以及session超时、过期处理
- 第3周实践项目7 删除链表元素最大值
- HDU-2050
- 精简版jre下tzmapping文件的问题
- ./nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No
- 解除分配UNASSIGN
- zookeeper服务端
- tcp和udp 学习整理(1)
- Python join()函数的使用
- 如何高效设计游戏——游戏策划的自我修养与心得
- 各种top
- 协议-网络层-ARP
- spring原理
- 南阳oj 27 dfs入门
- 【Android】调用MediaStore.Images.Media.insertImage保存图片时生成两张图片的问题