1.当前kafka最新的消息格式版本为v2版本
这一版本的特点是RecordBatch的形式,其中包含了多条productRecord消息,每条消息的公共部分抽取到了Recordbatch的消息头部分中,并且所有整数都使用了可变字节长度编码,也就是数值越小,所占的位数就越少.所以这样一个Recordbatch的消息就可以节省很多存储空间
对于压缩的消息,v2版本其实是对RecordBatch里面的record列表进行整体压缩
2.对于kafka消息的流向:
生产者生产RecordBatch消息(顺带压缩,如果有必要的话)–>broker收到这个RecordBatch消息时几乎原样保存—>消费者消费RecordBatch消息,其中包含多条消息记录(顺带解压,如果有必要的话)
3.对于消息时间戳的理解:如果生产者生产时创建了带有时间戳的消息也就是自带了消息的创建时间,那么broker保存消息的时候就保存这个创建时间戳就可以了,如果生产者生产消息的时候没有设置时间戳,而broker的timestamp类型为logAppendTime,那么broker在保存消息到日志中时会把broker的当前时间戳填充上作为消息的时间戳.
4.kafka的消息中是可以带消息头部的,这个头部可以实现例如ttl之类的效果