关于kafka:Kafka-工作流程及文件存储机制

54次阅读

共计 1125 个字符,预计需要花费 3 分钟才能阅读完成。

一、Kafka 工作流程

Kafka 中用 topic 对音讯进行分类,生产者和消费者都面向 topic 解决数据。
一个 topic 会分成多个 partition,放到不同的 broker 上用于进步吞吐量。
同一个 partition 外部又会拆分成多个 segment,避免数据过多时单文件过大。

二、文件存储构造

硬盘上文件存储相似于:

├── my-topic-0
│   ├── 00000000000000000000.index
│   ├── 00000000000000000000.log
│   ├── 00000000000000000000.timeindex
│   ├── 00000000003432423452.index
│   ├── 00000000003432423452.log
│   ├── 00000000003432423452.timeindex
│   └── leader-epoch-checkpoint
├── your-topic-1
│   ├── 00000000001237987534.index
│   ├── 00000000001237987534.log
│   ├── 00000000001237987534.timeindex
│   ├── 00000000006732746781.index
│   ├── 00000000006732746781.log
│   ├── 00000000006732746781.timeindex
│   └── leader-epoch-checkpoint

每个文件夹对应一个 topic 分区,文件夹命名规定

[topic name]-[partition id]

文件夹内是对应的 segment,每个 segment 次要蕴含 .log.index 文件。后续每个 Segment 文件名为上一个 Segment 文件最初一条音讯的 offset 值,数值大小为 64 位,20 位数字字符长度。

00000000000000000000.index
00000000000000000000.log
00000000000000000000.timeindex
00000000003432423452.index
00000000003432423452.log
00000000003432423452.timeindex
leader-epoch-checkpoint

Segment 文件的具体内容:
索引文件存储的元数据指向数据文件中的 message 的物理偏移地址

三、如何读取数据

以上图为例,要读取 offset=170418 的音讯。

  1. 先通过二分查找确定在哪个 segment
  2. 到对应的 index 文件中查问 offset=170418 的物理偏移地址
  3. 依据物理偏移地址,到 log 文件中读取对应的数据

正文完
 0