Kafka = 城市事件广播总线 + 可回放日志档案馆
Producer
|
| 发送事件(record)
v
Topic
|
+--> Partition 0 --> offset 0,1,2,3...
|
+--> Partition 1 --> offset 0,1,2,3...
|
+--> Partition 2 --> offset 0,1,2,3...
^
|
顺序只在单分区内成立
Broker
|
| 承载 topic 的 partition,组成集群
v
Kafka Cluster
Consumer Group
|
| 同组内分摊 partition
| 一条 partition 同时只归一个 consumer
v
Consumer
Committed Offset
|
| 记录“这个 group 下次从哪继续读”
| 不是“消息从 Kafka 删除了”
v
消费位点管理
Retention / Compaction
|
| 决定消息保留多久、如何清理
| 与是否被消费不是同一件事
v
回放 / 补算 / 重建状态
结论
|
+--> Kafka 像日志/事件流,不像传统派单队列
+--> 默认现实世界更接近 at-least-once
+--> 正确姿势是:分区设计 + 位点管理 + 幂等消费如果你读到这里,只记住 4 句话,也已经够用了:
topic是频道,partition是并行车道,offset是车道内编号。- Kafka 的顺序是“分区内有序”,不是“全局有序”。
- Kafka 消费的本质不是删消息,而是提交“我读到哪了”。
- Kafka 最强的地方不是“发任务”,而是“存事件流、分发事件流、回放事件流”。
#官方来源链接清单
- Apache Kafka 官方主页
- Apache Kafka Quickstart
- Apache Kafka 4.2 Documentation
- Apache Kafka Design
- Apache Kafka Producer Configs
- Apache Kafka Consumer Configs
- Apache Kafka Topic Configs
- Apache Kafka Distribution / Consumer Offset Tracking
- Apache Kafka Consumer Rebalance Protocol
- Apache Kafka Java Client Javadocs