我想知道在Kafka主题中我们能得到什么样的数据。据我所知,在应用程序级,这是一个键值对,这可能是语言支持的类型的数据。例如,我们向主题发送一些消息,它可能是一些json、Parquet文件、序列化数据,还是我们只使用纯文本格式的消息进行操作?谢谢你的帮助。
mnemlml81#
在这个主题上,它总是只是一系列的数据。序列化发生在生产者发送之前,反序列化发生在消费者获取之后。序列化程序和反序列化程序是可插入的,所以正如您在应用程序级别所说的,它是您想要的任何数据类型的键值对。
33qvvth12#
根据您谈论的是api、wire协议还是磁盘存储,有各种各样的消息格式。这里的文档中描述了一些Kafka消息格式https://kafka.apache.org/documentation/#messageformatKafka有一个序列化器/反序列化器或serdes(发音为sirdeez)的概念。https://en.m.wikipedia.org/wiki/serdes序列化程序是一个函数,它可以接收任何消息,并将其转换为实际使用kafka协议在线路上发送的字节数组。反序列化程序执行相反的操作,它读取kafka有线协议的原始消息字节部分,并按照您希望接收应用程序看到的方式重新创建消息。有用于字符串、long、bytearray、bytebuffers的内置serdes库,以及大量用于json、protobuf、avro以及特定于应用程序的消息格式的社区serdes库。您还可以构建自己的serdes库如何在kafka中创建自定义序列化程序?
2条答案
按热度按时间mnemlml81#
在这个主题上,它总是只是一系列的数据。序列化发生在生产者发送之前,反序列化发生在消费者获取之后。序列化程序和反序列化程序是可插入的,所以正如您在应用程序级别所说的,它是您想要的任何数据类型的键值对。
33qvvth12#
根据您谈论的是api、wire协议还是磁盘存储,有各种各样的消息格式。
这里的文档中描述了一些Kafka消息格式
https://kafka.apache.org/documentation/#messageformat
Kafka有一个序列化器/反序列化器或serdes(发音为sirdeez)的概念。
https://en.m.wikipedia.org/wiki/serdes
序列化程序是一个函数,它可以接收任何消息,并将其转换为实际使用kafka协议在线路上发送的字节数组。
反序列化程序执行相反的操作,它读取kafka有线协议的原始消息字节部分,并按照您希望接收应用程序看到的方式重新创建消息。
有用于字符串、long、bytearray、bytebuffers的内置serdes库,以及大量用于json、protobuf、avro以及特定于应用程序的消息格式的社区serdes库。
您还可以构建自己的serdes库
如何在kafka中创建自定义序列化程序?