存储机制
存储架构
目录结构
/kafka-logs/
├── orders-0/ # Topic: orders, Partition: 0
│ ├── 00000000000000000000.log # 第一个 Segment
│ ├── 00000000000000000000.index # 偏移量索引
│ ├── 00000000000000000000.timeindex # 时间戳索引
│ ├── 00000000000000123456.log # 第二个 Segment (baseOffset=123456)
│ ├── 00000000000000123456.index
│ ├── 00000000000000123456.timeindex
│ └── leader-epoch-checkpoint
├── orders-1/ # Topic: orders, Partition: 1
│ └── ...
└── __consumer_offsets-0/ # 内部 Topic: 消费位移
└── ...存储层次
Log Segment
Segment 结构
消息格式
Segment 配置
索引设计
稀疏索引
查找过程
时间索引
日志清理
两种清理策略
Delete 策略
Compact 策略
零拷贝
传统数据传输
零拷贝(sendfile)
Java 实现
Page Cache
Page Cache 的作用
顺序写
顺序写 vs 随机写
面试高频问题
1. Kafka 为什么性能这么高?
2. Kafka 的索引机制是怎样的?
3. Log Compaction 的原理?
4. 零拷贝是如何实现的?
总结
Last updated