目录
一、服务端启动
二、会话管理
2.1、创建
2.2、管理
2.3、重连
2.4、清理
三、事务处理
3.1、处理流程
3.2、请求处理链
本章围绕两个主题展开,会话管理和事务的处理(数据处理)流程,目的是了解下zk的CS模式是如何运转的。
一、服务端启动
服务端启动后主要要做哪些工作呢,主要有以下三个:
- 设置默认Watcher;
- 设置Zookeeper服务器地址列表;
- 创建ClientCnxn;
二、会话管理
2.1、创建
会话创建的流程图如下所示:
2.1.1、ServerAddressList
在实例化Zookeeper时,用户传入Zookeeper服务器地址列表,如192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181,此时,Zookeeper客户端在连接服务器的过程中,Zookeeper收到服务器地址列表后,会解析出chrootPath和保存服务器地址列表:
- Chroot,每个客户端可以设置自己的命名空间,若客户端设置了Chroot,此时,该客户端对服务器的任何操作都将被限制在自己的命名空间下,如设置Choot为/app/X,那么该客户端的所有节点路径都是以/app/X为根节点;
- 地址列表管理,Zookeeper使用StaticHostProvider打散服务器地址(shuffle),并将服务器地址形成一个环形循环队列,然后再依次取出服务器地址;
2.1.2、ClientCnxn
ClientCnxn是Zookeeper客户端中负责维护客户端与服务端之间的网络连接并进行一系列网络通信的核心工作类,Packet是ClientCnxn内部定义的一个堆协议层的封装,用作Zookeeper中请求和响应的载体。Packet包含了请求头(requestHeader)、响应头(replyHeader)、请求体(request)、响应体(response)、节点路径(clientPath/serverPath)、注册的Watcher(watchRegistration)等信息,然而,并非Packet中所有的属性都在客户端与服务端之间进行网络传输,只会将requestHeader、request、readOnly三个属性序列化,并生成可用于底层网络传输的ByteBuffer,其他属性都保存在客户端的上下文中,不会进行与服务端之间的网络传输。文章来源:https://www.toymoban.com/news/detail-441702.html
ClientCnxn维护着 outgoingQueue(客户端的请求发送队列 和 pendingQueue(服务端响应的等待队列&#文章来源地址https://www.toymoban.com/news/detail-441702.html
到了这里,关于Zookeeper(4) - 会话管理和事务处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!