kafka的文件存储是通过落盘的方式进行存储。主要是通过.log文件和.index保存具体的消息文件。
kafka中有生产者,消费者和topic等三个简单的概念。生产者提供消息到topic,而消费者通过订阅该topic进行消息消费。而在topic中还有分区(Partition)的概念,即一个topic中可能存在多个partition。partition是一个物理概念,每个partition都会对应一个.log文件,该.log文件就是生产者所生产的消息。
如果生产者向某一个partition一直发送消息,该partition所对应的.log文件就会一直在末尾追加,为了防止.log文件过大而导致定位效率低下kafka的log文件的分界值为1G。当文件大小超过1G时,就会创建新的.log文件。同时,为了快速的检阅大文件中的消息位置,kafka运用了分片和索引的机制进行定位。
.index文件存储消息offset+真实的起始偏移量,.log文件存储的是真实的数据。