跳到主内容
快讯直播
AI智模界
AI 词典

Kafka:不是消息队列,是可重放的日志

一句话定义:Kafka 是一个分布式提交日志(distributed commit log)系统。它把事件按到达顺序追加写入磁盘并长期保留,谁需要读取,谁就自己记住读到哪个位置。这套设计使它更像“能回放的流水账”,而不像传统意义上“发完就忘”的消息队列。

原理:从点菜说起

传统消息队列像传菜员:菜送到你手上,盘子就撤了;你没接到,菜就没了。Kafka 则像后厨的一本流水账:每来一单,就在末尾写一行,写完不擦。顾客不慌,只记一句“我读到第 37 行”,下次从 38 行接着读。想重读?把书签往前挪即可。

账本太厚就拆成几本,这就是分区(partition):消息按 key 决定进入哪一本,例如同一个用户的订单永远进入同一本,因此本内严格有序,本与本之间可以并行读写,横向扩容也就从这里来。那个“书签”叫消费位点(offset)。消费者(consumer)自己管理位点,把它往回拨就是重放(replay)。生产者和消费者互不认识,中间只隔着一本不断变长的日志。

和传统消息队列的差别

维度传统消息队列Kafka
消息生命周期消费确认后删除按时间或容量保留,可反复读
顺序保证队列级分区内有序
消费方式broker 推送并记录状态消费者拉取并自己记位点
多方消费一条消息通常只给一个消费者多个消费组各读各的,互不影响
典型定位任务分发数据管道、事件流

AI 数据管道为什么爱用它

第一是“一份数据、多方使用”。同一条用户行为日志,可以同时喂给特征工程、离线训练、实时监控和审计,四方各自按自己的速度读,快的不会被慢的拖住。第二是重放:模型迭代要“把过去三个月的数据再过一遍”,传统队列做不到,Kafka 把位点往回一拨就行,这是 AI 场景最刚需的能力。第三是削峰解耦:推理服务、埋点、日志的突发流量先写入磁盘,下游慢慢消化。第四是保序:同一会话的事件不乱序,特征才不会算错。

对从业者的意义

别把 Kafka 当“发消息的”来设计。要关心三件事:key 怎么选(决定分区与顺序)、保留策略留多久(决定你还能不能重训)、位点何时提交(决定是“至少一次”还是可能丢)。对普通人来说,推荐系统的特征刷新、你手机里悄悄上传的行为日志,背后很可能就是它在不停地写入数据。具体配置与行为以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。