1 Jute概念
ZK客户端与服务端的网络通信和数据传输,需要首先解决的事数据序列化与反序列化问题。
Jute前身是Hadoop Record IO,后来Hadoop框架采用Avro(跨语言特性好,数据结构丰富,对MR的支持),Record IO就被剥离出来成为Jute。
Jute对于ZK不是性能瓶颈,因此一直沿用。
2 Jute基础
2.1 序列化
网络通信中,基于二进制传输数据,这就会涉及到序列化,反序列化过程。
序列化:将内存中的对象转换成二进制的过程
反序列化:从网络中接收到的数据转换成内存中对象的过程
序列化反序列化中还需要定义序列化协议即数据相互变换的机制。
2.2 Jute序列化机制
Jute实现序列化的步骤包括:
构建序列化对象:对象实现Record接口,自定义serialize与deserialize方法
设计序列化器:序列化器接口是OutputArchive,三种实现:BinaryOutputArchive,CsvOutputArchive和XmlOutputArchive,分别对应无特殊格式,有csv格式和有xml格式的数据序列化。
设计反序列化器:反序列化器接口是InputArchive,三种实现:BinaryInputArchive,CsvInputArchive和XmlInputArchive,分别对应无特殊格式,有csv格式和有xml格式的数据序列化。
3 Jute通信协议
请求:请求头,请求体
响应:响应头,响应体