千家信息网

zk client会话过程是怎样的

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"zk client会话过程是怎样的",在日常操作中,相信很多人在zk client会话过程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"zk
千家信息网最后更新 2026年10月31日zk client会话过程是怎样的

这篇文章主要介绍"zk client会话过程是怎样的",在日常操作中,相信很多人在zk client会话过程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"zk client会话过程是怎样的"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

client会话过程

zk客户端的主要核心组件

zk客户端会话过程

初始化阶段

创建阶段

响应阶段

UML图

zk客户端主要组件

zookeeper 客户端入口

ClientWatchManager:客户端Watch管理器

HostProvider:客户端地址管理器

ClientCnxn:核心线程,包含SendThread和EventThread两个线程

SendThread为i/o线程,主要负责客户端和服务器之间网络io

EventTrhead为事件线程

初始化阶段

主要分为:

1 初始化ZooKeeper对象

通过调用zookeeper的构造方法实例化一个对象,初始化过程中会创建一个watcher管理器ClientWatcherManager

2 设置会话默认watcher

如果构造中传入一个watcher,就将它作为默认watcher保存到ClientWatcherManager

3 构建zk服务地址列表管理器HostProvider

通过构造器传入的服务端地址列表,将其保存在服务器地址列表管理器中HostProvider

4 创建并初始化客户端网络连接

zookeeper客户端创建一个网络连接器ClientCnxn,用来管理客户端和服务端网络交互

创建ClientCnxn过程中还会初始化客户端两个核心队列outGoingQueue和pendingQueue

作为客户端发送请求队列和服务端响应等待队列

5初始化SendThread和EventThread

会话创建阶段

6启动SendThread和EventThread

sendTHread首先会判断当前客户端的状态,进行一系列清理性工作,为客户端发送"会话创建"请求准备

7获取一个服务地址

在创建TCP之前,SendThread首先需要获取一个ZooKeeper服务器的目标地址,通常就是从HostProvider中随机获取出一个地址,然后委托给ClientCnxnSocket去创建与Zookeeper服务器之间的TCP连接

8 创建tcp连接,获取一个服务器地址后,clientCnxnSocket负责和服务器创建一个TCP长连接

9构建ConnectRequest请求

在TCP连接创建完毕后,就说明已经和zookeeper服务器完成了连接呢?其实不是,上面的步骤只是从网络tcp层完成了socket连接,但没有完成zookeeper客户端和服务端的连接

SendThread会负责当前请求参数,构造出一个ConnectRequest请求,同时将包装成网络io层的Packet对象,放入发送队列outgoingQueue中

10 发送请求

ClientCnxnSocket将从outgoingQueue中取出待发送的Packet,序列化成bytebuffer,进行发送

响应处理阶段

11响应处理

接收到服务端响应后,首先判断当前客户端状态是否是"已初始化",如果没有完成初始化,那么认为该响应一定是会话创建请求的响应,交给readConnnectResult方法处理响应

12 处理respinse

ClientCnxnSocket会对接收到的服务端响应进行反序列化,得到ConnectResponse对象,并从中获取到zookeeper服务端分配的会话sessionId,

13 连接成功

通知SendThread线程,处理会话参数设置,包括时间设置等等

另一个方面,需要通知地址管理器HostProvider当前成功连接的服务器地址

14 生成事件

为了能够让上层应用感应到会话成功创建,SendThread会生成一个事件SyncConnected-None,代表会话创建成功,并将事件传递给EventTread线程

15 查询Watcher

EventThread收到事件后,从ClientWatchManager管理器中查询出对应的watcher,放入waitingEvents队列中

16 处理事件

取出事件对应的watcher列表,调用process接口,达到出发watcher目的

public ZooKeeper(    String connectString,    int sessionTimeout,    Watcher watcher,    boolean canBeReadOnly,    HostProvider aHostProvider,    ZKClientConfig clientConfig) throws IOException {    LOG.info("Initiating client connection, connectString=" + connectString             + " sessionTimeout=" + sessionTimeout             + " watcher=" + watcher);    if (clientConfig == null) {        clientConfig = new ZKClientConfig();    }    this.clientConfig = clientConfig;    watchManager = defaultWatchManager();    watchManager.defaultWatcher = watcher;    ConnectStringParser connectStringParser = new ConnectStringParser(connectString);    hostProvider = aHostProvider;    cnxn = createConnection(        connectStringParser.getChrootPath(),        hostProvider,        sessionTimeout,        this,        watchManager,        getClientCnxnSocket(),        canBeReadOnly);    cnxn.start();}// @VisibleForTestingprotected ClientCnxn createConnection(    String chrootPath,    HostProvider hostProvider,    int sessionTimeout,    ZooKeeper zooKeeper,    ClientWatchManager watcher,    ClientCnxnSocket clientCnxnSocket,    boolean canBeReadOnly) throws IOException {    return new ClientCnxn(        chrootPath,        hostProvider,        sessionTimeout,        this,        watchManager,        clientCnxnSocket,        canBeReadOnly);}

到此,关于"zk client会话过程是怎样的"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

服务 客户 客户端 地址 过程 服务器 管理 事件 线程 网络 阶段 处理 队列 成功 对象 学习 方法 核心 端的 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 互联网科技股 广州万易互联网科技有限公司 科技平台互联网 互联网最新的科技 互联网科技有限公司经营范围 互联网科技与金融科技 远信互联网科技 西安互联网科技公司 承德科技产业互联网发展 互联网科技项目计划书材料类 亳州好赞互联网科技有限公司 乌苏新华互联网科技做什么的 用友工业互联网科技发展 锡山区互联网智能科技产品供应 电子商务与互联网科技的关系 厦门江牛科技互联网 杭州科技互联网公司有哪些 科技互联网专业务虚会材料 青岛互联网科技园 河南云网互联网络科技有限公司 中国互联网科技工作委员会毛军 厦门中拓互联网络科技有限公司 狮子座互联网科技有限公司 伴你行互联网科技有限公司 济南和联互联网科技有限公司 米聚互联网科技南京有限公司排面 电子科技大学互联网创业大赛 沐思想互联网科技有限公司 抖集互联网科技技术咨询
0