客户端主要由几个核心组件组成:
1.Zookeeper 类,入口。
2.ClinentWatchManager:watcher管理器。
3.HostProvider:地址列表管理器。
4.ClientCnxn 核心类,内部包含两个线程,
- SendThread 处理 I/O的线程。
-
EventThread 处理事件的线程。维护一个 waitingEvents 队列。
一次会话的创建过程,分为三个阶段:
1.初始化阶段
- 初始化 zookeeper 实例
- 设置Watcher
- 构造 HostProvider,地址列表管理器
- 初始化 ClientCnxn
- 初始化 SendThread 和 EventThread
2.会话创建阶段
- 启动 SendThread 和 EventThread
- 随机获取一个服务器地址
- 创建 TCP 连接
- 构造 ConnectRequest 请求
- 发送请求
3.响应处理阶段。
- 接受服务器响应
- 处理 Response
- 连接成功
- 生成事件:SyncConnected.None
- 查询 Watcher
- 处理事件