Zookeeper 3.3.3消息序列化格式解析

本文深入解析Zookeeper 3.3.3中客户端与服务器间的消息序列化过程,包括请求包和应答包的格式,详细介绍了RequestHeader和ReplyHeader的内容,以及不同操作类型的包体结构,如Create、Delete、Exists等。同时,文中提到了特殊xid的含义,如重连时的watch设置和ping操作,并阐述了客户端线程管理及session失效后的处理机制。
摘要由CSDN通过智能技术生成

Zookeeper 客户端使用Packet来管理消息,. Packet管理 请求包头(RequestHeader)和请求包体(Record的不同实现,类似于ExistsRequest在调用zookeeper.exists时发送),应答包头(ReplyHeader)和应答包体(Record的不同实现,类似于ExistsResponse). 与服务器进行通信时,依靠自己实现序列化方式来序列化请求包头以及请求包体,并且反序列化应答包头以及应答包体。

 

请求包序列化格式:

第一部分:4个字节表示整个包的长度(包头+包体)

第二部分:关注RequestHeader 类,Header包头,总共8个字节,前4个字节表示客户端生成的xid,用于跟踪包,采用自增方式生成的,需要服务器在响应时返回,后四个字节表示本包的操作类型:即ZooDefs.OpCode,它是一个整数值,分别代表"notification", "create","delete", "exists","getData", "setData", "getACL","setACL","getChildren", "getChildren2","getMaxChildren", "setMaxChildren", "ping"。getChildren和getChildren2操作的区别在于是否返回Stat统计数据,返回统计数据Stat的操作是getChildren2。

第三部分:关注Record接口的任何实现类,optional,因此长度字节数不固定,可以没有这一部分,例如ping操作

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值