跳转到主要内容

关键词词典

Kafka

分布式消息与流处理平台。以可持久化的分区日志为核心,支撑高吞吐的消息传递与事件流处理。

又称Apache Kafka

技术组件

核心模型

Kafka 的本质是分布式提交日志:

  • Topic 是逻辑上的消息类别,Partition 是物理分片,每个分区是一个有序、不可变、可重放的日志。
  • 分区内有序,分区间无序。要保证同一实体的顺序,就必须用同一个 key 把它们路由到同一分区。
  • Consumer Group 内的消费者分摊分区,组间互不影响,因此同一份数据可以被多个系统各自消费。
  • 消息不靠 broker 推送,而是消费者主动拉取,消费进度(offset)由消费者自己维护。

为什么说它「可重放」

Kafka 的消息按保留策略(默认 7 天,也可按大小或永久保留)落盘,不会因为被消费就删除。这意味着新上线的消费者可以从头读取历史数据——这是构建事件溯源、缓存重建、数据同步的基础。

投递语义

语义实现代价典型场景
至多一次最低,容忍丢失指标上报
至少一次默认,需业务幂等绝大多数场景
精确一次事务 + 幂等生产者金融记账

银行场景里,「至少一次 + 业务幂等」通常比追求精确一次更实用:把幂等做在业务侧(流水号去重),比依赖中间件的事务更简单也更可验证。

常见坑

  • 分区数一旦增加,key 到分区的映射就变了,会打破原有的顺序保证。
  • 消费者处理慢导致 rebalance,进而引发「消费停顿—积压—再 rebalance」的死亡螺旋。
  • 把 Kafka 当消息队列用(比如依赖单条消息的确认与重试),会踩到它作为日志系统的设计边界。

提及本词的文章

相关词条