拿下技术面上传简历

订单支付成功后发一条事件到 Kafka,由积分服务消费后给用户加积分。生产端配置 acks=all、min.insync.replicas=2,消费端手动提交 offset。上线后监控发现大约 0.01% 的订单被加了两次积分。请你判断这个重复是从哪里来的,并给出一个端到端的解决方案,说明为什么它比「让 Kafka 保证 exactly-once」更可靠。

工程与系统设计数据与存储3-5 年知识点 1 个

面试官在考什么

判断候选人是否理解 at-least-once 是工程常态、重复消费只能靠消费端幂等解决,而不是寄希望于中间件开关。

消息队列

回答框架 · 前两步

  1. 定性:acks=all 只保证「broker 不丢」,不代表消费端不重复。Kafka 跨系统默认只能做到 at-least-once,重复是必然事件,必须由消费端做幂等兜底。
  2. 重复的两个主要来源:一是消费端「业务处理成功但 offset 提交前进程崩溃或触发 rebalance」,分区被重新分配后从上次 offset 重放;二是生产端重试导致同一条消息被写入多次(Kafka 幂等 producer 只覆盖单分区单会话,跨会话/跨生产者不保证)。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

同一能力域的其他题