kafka有自己的rpc协议,即nio bytebuf中的数据格式,详见之前的kafka相关介绍的文章。这里我们来看一下大家常用,有时又疑惑的序列化反序列化,对应rpc协议中的records,kafka叫Serdes,实际上也是字面上的意思serialize and deserialize。在程序中序列化就是toBinary,反序列化是fromBinary,存储和传输都是用二进制。
通过以上描述,我们知道序列化和反序列化的作用。我们来看kafka的实现。Serdes工厂类,和提供基本数据类型序列化。

一、先看基础的抽象
interface:Serializer

包括 configure,例如配置ChartSet字符集,serialize,序列化。
interface:Deserializer

同理。
再来看包装接口:Serde

指定了serializer和deserializer。
二、 实现类,以Serializer为例

提供了几大应用的实现,分别是common,connect,stream,也即对应了kafka一般场景、kafka抽数场景如debezium,kafka stream原生流计算。我们看common,主要是实现了基本的数据类型的序列化,举两个例子,Long和String。


从上我们知道实现Serialize类,主要做了toBinary动作。
三、包装类,工厂方法

这里看WrapperSerde

为静态内部类,有一批子类:

看其中一个常用的StringSerde

引入String序列化类和反序列化类。
No Comments
Leave a comment Cancel