本文共 579 字,大约阅读时间需要 1 分钟。
(1)一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成
(2)header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常,是否丢包,数据不一样CRC32算出来的数字也是不一样的)构成。 当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性 (3)body是由N个字节构成的一个消息体,包含了具体的key/value消息备注:Kafka 0.10.0之前版本的格式
(1)存储在磁盘的日志采用不同于Producer发送的消息格式,
(2)每个日志文件都是一个“log entries”序列 (a)每一个log entry包含一个四字节整型数(message长度,值为1+4+N) (b)一个字节的magic (c)四个字节的CRC32值 (d)最终是N个字节的消息数据。每条消息都有一个当前Partition下唯一的64位offset (3)其实这个log entries也不是一个文件,是一个index(索引文件)和一个log日志文件1.