1. 消息一条条写入,Segment 满了自动新建
模拟 Producer 不断写消息。当 active segment 达到 segment.bytes 阈值,自动 roll:
新建 .log / .index / .timeindex 三个文件,
后续写入进入新 segment。
已写入消息
0
总字节
0 B
Segment 数
0
active segment 进度:
磁盘文件树(learn.07.storage-0/)
点击「开始写入」
事件日志
2. 给定 Offset,演示 .index 二分 → .log 顺序扫
下面是一段虚拟的 .index(稀疏,每 4KB 一项),还有 .log(按 batch 顺序)。 输入想查的 offset,看二分定位 + 顺序扫的过程。
.index(稀疏,按 relative offset 升序)
.log(按 batch 顺序)
3. V2 RecordBatch 字节布局(点击高亮字段)
一个 RecordBatch 头共 61 字节,下面用 64 字节的 grid 显示(最后 3 字节是 records 起始)。 点击字段名查看含义。
字段图例
RecordBatch 字节 grid(每格 1B)
字段详解
点上面的字段按钮查看详细解释
完整字段表
| 字段 | 类型 | 字节 | 含义 |
|---|---|---|---|
| baseOffset | int64 | 8 | batch 第一条 offset |
| batchLength | int32 | 4 | 后续所有字节总长 |
| partitionLeaderEpoch | int32 | 4 | 当前 Leader Epoch |
| magic | int8 | 1 | = 2 表示 V2 |
| crc | int32 | 4 | 后续字节的 CRC32C |
| attributes | int16 | 2 | 压缩 / timestampType / 事务 / 控制 等位图 |
| lastOffsetDelta | int32 | 4 | batch 内最大 offset - baseOffset |
| firstTimestamp | int64 | 8 | batch 第一条时间戳 |
| maxTimestamp | int64 | 8 | batch 内最大时间戳 |
| producerId | int64 | 8 | 幂等/事务 PID |
| producerEpoch | int16 | 2 | 幂等/事务 Epoch |
| baseSequence | int32 | 4 | batch 第一条 sequence |
| recordsCount | int32 | 4 | batch 包含的 record 数 |
| header 总计 | — | 61 | — |
| records | 变长 | 变 | 压缩后的 records 段 |