我们都知道,kafka是以日志文件的方式来存储kafka消息的,日志消息的格式不仅关系功能维度 的扩展,还牵涉性能维度的优化。如果格式不恰当,会导致消息的大小偏大,占用内存更高
kafka经历了多代的演变,这里只讲重要的3代,v0、v1、v2版本
v0版本
v0版本的日志消息,分为两个部分,一个是由offset、message size组成的日志头部、下面的部分称为消息record(记录)
crc32 :校验值。校验范围为magic至value 之间
magic :消息格式版本号 此版本的magic值为0
attributes :消息的属性。总共占1个字节,低3位表示压缩类型:0表示
NONE 无压缩,1表示GZIP ,2表示SNAPPY,3表示LZ4 。其余位保留。
keylength :表示消息的 key 的长度。如果为key为-1,则表示没有设置 key ,即key= null
key :可为null 如果没有 key 则无此宇段。
valuelength :实际消息体的长度。如果为-1,则表示消息为空。
value