2 序列化与协议
ZooKeeper使用了Jute序列化组件来进行序列化/反序列化操作
2.1 Jute
使用Jute进行序列化/反序列化操作的步骤:
2.2 通信协议
基于TCP/IP实现了自己的通信协议来完成客户端与服务端、服务端与服务端之间的网络通信
请求和响应的结构体:
2.2.1 协议解析:请求部分
”获取节点数据“请求为例的完整协议定义:
2.2.1.1 请求头:RequestHeader
包含了请求最基本的信息:xid、type
2.2.1.2 请求体:Request
请求的主体内容部分,包含了请求的所有操作内容
三种常见的典型请求体定义:会话创建、获取节点数据、更新节点数据
- ConnectRequest:会话创建
- GetDataRequest:获取节点数据
- SetDataRequest:更新节点数据
以“获取节点数据”为例进一步了解请求协议:
2.2.2 协议解析:响应部分
”获取节点数据“响应为例的完整协议定义:
2.2.2.1 响应头:ReplyHeader
包含了每一个响应最基本的信息,包括xid、zxid、err
2.2.2.2 响应体:Response
指响应的主体内容部分,包含了响应的所有返回数据
三种常见的典型响应体定义:会话创建、获取节点数据、更新节点数据
- ConnectResponse:会话创建
- GetDataRequest:获取节点数据
- SetDataRequest:更新节点数据
以“获取节点数据”为例进一步了解响应协议: