Session 指的是 ZooKeeper 服务与客户端的会话。
在 ZooKeeper 中,客户端连接,是指客户端和服务器之间的 TCP 长连接。
客户端启动的时候,首先会与服务建立一个 TCP 连接,从第一次连接建立开始,客户端会话的生命周期也开始了。**通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 Zookeeper 服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的 Watch 事件通知。
Session 的 sessionTimeout
配置值是用来设置客户端会话的超时时间。当由于服务压力太大、网络故障或是主动断开连接等等各种原因,导致客户端连接断开时,只要在 sessionTimeout
规定的时间内,客户端能重新连上集群中的任意服务器,那么之前创建的会话就仍然有效。
在为客户端创建会话之前,服务端首先会为每个客户端都分配一个 sessionID。由于 sessionID 是 Zookeeper 会话的一个重要标识,许多与会话相关的运行机制都是基于这个 sessionID 的。因此,无论是哪台服务器为客户端分配的 sessionID,都务必保证全局唯一。
网友评论