在讲 Kafka 日志源码之前,我们要先对 Kafka 日志有一个大体的认识
这也是阅读源码的关键,一步一步来
前面我们聊到了 Kafka 的生产端的整体架构
可以看到,我们每一个 Topic 都可以分为多个 Partition ,而每一个 Partition 对应着一个 Log
但这里会存在两个问题,如果我们的数据过大
Log 能装下吗?所以,Kafka 在这里引入了日志分段(LogSegment )的概念,将一个 Log 切割成多个 LogSegment 进行存储
实际上,这里的 Log 和 LogSegment 并不是纯粹的物理意义上的概念
Log 对应的文件夹LogSegment 对应磁盘上的一个日志文件和两个索引文件
.log 为文件后缀.index为文件后缀).timeindex为文件后缀)这里有个重点要记一下:每个 LogSegment 都有一个基准偏移量 baseOffset,用来表示当前 LogSegment 第一条消息的 offset
日志和索引文件命名都是按照基准偏移量进行命名,所以日志整体架构如下:
这里我们简单介绍下这个日志是怎么搜索的,后面会深入源码细聊
我们回顾一下上篇文章的整体流程图: