kafka消息格式
消息(又名记录)始终是按批次写入。一批消息用技术术语表达就是记录批次
,记录批次包含一个或多个记录。 在低性能的情况下,一个批次只有单条消息。记录批次和记录都有自己的头文件。下面介绍了Kafka版本0.11.0及更高版本(消息格式版本v2或magic = 2)的格式。点击此处查看有关邮件格式0和1的详细信息。
5.3.1 消息批次
以下是RecordBatch的磁盘格式。
baseOffset: int64
batchLength: int32
partitionLeaderEpoch: int32
magic: int8 (current magic value is 2)
crc: int32
attributes: int16
bit 0~2:
0: no compression
1: gzip
2: snappy
3: lz4
bit 3: timestampType
bit 4: isTransactional (0 means not transactional)
bit 5: isControlBatch (0 means not a control batch)
bit 6~15: unused
lastOffsetDelta: int32
firstTimestamp: int64
maxTimestamp: int64
producerId: int64
producerEpoch: int16
baseSequence: int32
records: [Record]
请注意,当启用压缩时,压缩记录数据将按照记录数的计数直接序列化的。
CRC涵盖从属性到批次结束的数据(即。CRC之后的所有的字节)。它位于magic字节之后,也就是说,在决定如何解析批次长度和mag