1. kafka

Kafka序列化反序列化解析

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

通过以上描述,我们知道序列化和反序列化的作用。我们来看kafka的实现。Serdes工厂类,和提供基本数据类型序列化。

org.apache.kafka.common.serialization uml

一、先看基础的抽象

interface:Serializer

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

interface:Deserializer

同理。

再来看包装接口:Serde

指定了serializer和deserializer。

二、 实现类,以Serializer为例

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

LongSerializer
StringSerializer

从上我们知道实现Serialize类,主要做了toBinary动作。

三、包装类,工厂方法

这里看WrapperSerde

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

看其中一个常用的StringSerde

引入String序列化类和反序列化类。

Comments to: Kafka序列化反序列化解析

Your email address will not be published. Required fields are marked *