客户端启动过程
a). StaticHostProvider 将传入的server列表打散成一个环形,随机获取一个server进行连接
b). 可自定义StaticHostProvider来从配置文件中获取hostlist
c). 自定义StaticProvider 定时从某处更新host列表, 以实现zk集群迁移而不影响客户端的效果
d). 自定义StaticProvider 返回给客户端较近的ZK集群地址,如同一个服务F在杭州和北京都有部署
会话-Session
a). CONNECTING、CONNECTED、RECONNECTING、RECONNECTED、CLOSE
如果出现server断开的情况,ZK客户端会自动进行重连(CONNECTING),连上后再变成CONNECTED
b). 全局唯一的sessionId 使用时间和SID组合生成
c). session分桶策略 将每个session按下次超时时间进行分类,所以只需要定时检查一个桶内的session是否超时即可,而不用检查全部session
b). 心跳检测 客户端在超时时间内向Server发送心跳请求,server则回复一个新的过期时间,以此来保持会话
e). 会话转移
客户端隔离命名空间
传入"192.168.0.1:2181,192.168.0.2:2181/apps/X" 形式的地址,则后续所有的操作都是以/apps/X为根目录进行操作的,起到应用间相互隔离的作用
如创建节点 /test_chroot,则实际创建的完整目录是/apps/X/test_chroot