《从Paxos到ZooKeeper》第七章总结八:ZooKeeper技术内幕之请求处理

8 请求处理

针对客户端的一次请求,ZooKeeper处理如下

8.1 会话创建请求

会话创建请求中服务端的流程图:
在这里插入图片描述
分为请求接收、会话创建、预处理、事务处理、事务应用、会话响应六个环节

8.1.1 请求接收

1.IO层接收来自客户端的请求
在这里插入图片描述
2.判断是否是客户端”会话创建“请求
在这里插入图片描述
3.反序列化ConnectRequest请求
在这里插入图片描述
4.判断是否是ReadOnly客户端
在这里插入图片描述
5.检查客户端ZXID
在这里插入图片描述
6.协商sessionTimeout
在这里插入图片描述
7.判断是否需要重新创建会话
在这里插入图片描述

8.1.2 会话创建

8.为客户端生成sessionID(4.2中有算法解析)
在这里插入图片描述
9.注册会话
在这里插入图片描述
10.激活会话
在这里插入图片描述
11.生成会话密码及其算法
在这里插入图片描述

8.1.3 预处理

12.将请求交给ZooKeeper的PrepRequestProcessor处理器进行处理

13.创建请求事务头:
在这里插入图片描述
14.创建请求事务体
在这里插入图片描述
15.注册与激活会话
在这里插入图片描述

8.1.4 事务处理

16.将请求交给ProposalRequestProcessor处理器
在这里插入图片描述
请求事务处理的三个流程如下图:
在这里插入图片描述

8.1.5 事务应用

17.交付给FinalRequestProcessor处理器
在这里插入图片描述
18.事务应用
在这里插入图片描述
19.将事务请求放入队列:commitProposal
在这里插入图片描述

8.1.6 会话响应

20.统计处理
在这里插入图片描述
21.创建响应ConnectResponse
在这里插入图片描述
22.序列化ConnectResponse

23.IO层发送响应给客户端

8.2 SetData请求

服务器对于SetData请求的处理分为四步:请求预处理、事务处理、事务应用、请求响应

流程图:
在这里插入图片描述
大部分步骤与会话创建请求相同

8.3 事务请求转发

在这里插入图片描述

8.4 GetData请求

分为三个步骤:请求预处理、非事务处理、请求响应
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值