四、会话
1、会话状态
ZooKeeper客户端与服务端创建连接后,就建立起了一个会话。会话有几种状态:CONNECTING、CONNECTED、RECONNECTING、RECONNECTED、CLOSE等。
2、会话创建
1)Session
Session是ZooKeeper的会话实体,达标一个客户端会话。包含四个基本属性:sessionID、TimeOut、TickTime、isClosing。
2)sessionID
用来唯一标识一个会话,具有全局唯一性。initializeNextSession方法生成一个初始化的sessionID,算法是高8位确定所在机器,低56位使用当前时间的毫秒表示进行随机。
3)SessionTracker
SessionTracker是ZooKeeper服务端的会话管理器,负责会话的创建、管理和清理等工作。
五、服务器启动
1、单机版服务器启动
分为五个步骤:配置文件解析、初始化数据管理器、初始化网络IO管理器、数据恢复、对外服务
预启动
1)zkServer.sh脚本中配置了QuorumPeerMain作为启动类;
2)解析配置文件zoo.cfg,包括端口、dataDir、tickTime等;
3)清理事务日志和数据快照;
4)判断是集群模式还是单机模式:如果是单机模式,交给ZooKeeperServerMain进行启动;
5)再次解析配置文件zoo.cfg
6)创建服务器实例ZooKeeperServer:创建服务器实例、初始化工作。
初始化