英文版本为准
本页译自英文,由模型翻译。若与英文原文存在差异,以英文原文为准。
日志
Kafka 主题是一组分区,每个分区都是按偏移量编号的有序记录日志,每个消费者组都读取它的全部内容。
以文字阅读本图
- 主题 orders: P0; 0; 1; 2; 3; 4; 5; P1; 0; 1; 2; 3; P2; 0; 1; 2; 3; 4
- 组 billing: 成员 1:P0、P1; 成员 2:P2
- 组 audit: 成员 1: P0、P1、P2
- 生产者 键决定分区 → 主题 orders: 追加
- 主题 orders → 组 billing: 读取每条记录
- 主题 orders → 组 audit: 读取每条记录
- 每个组按分区提交自己的偏移量: 也就是它继续读取的那条记录
生产者把一条记录追加到主题的一个分区。带键的记录进入其键的哈希所对应的分区,因此同一个键的记录保持顺序。不带键的记录由生产者的分区器决定去向。
每个分区从零开始给记录编号,它的偏移量与其他分区的偏移量各自增长。顺序只在分区内部成立,在其他任何地方都不成立。记录一直留在日志里,直到保留策略删除它,不管有没有人读过。
消费者组把主题的每条记录读一次。组把每个分区交给它的一个成员,于是成员们分担工作。第二个组对每条记录读取属于自己的一份,两个组互不影响。
组读到了哪里,就是每个分区一个数字:它已提交的偏移量,也就是它继续读取的那条记录。Kafka 不保存逐条记录的确认。
这一模型就是 Apache Kafka 自己的模型(概念与术语)。组如何分担分区,见消费者组;客户端如何读取和提交,见消费者。