D
AI
学习工作台
8 周后端冲刺2026-05-221 分钟阅读

Kafka 与可靠性

分区、副本、ISR、消费语义与幂等

8周冲刺week6Kafka可靠性记笔记标记疑惑

Kafka 架构

Topic 逻辑流,物理 Partition 日志分段存储于 broker。Producer 指定 key → partition;或 round-robin。

Consumer pull 模式,自己控制速率;consumer group 协调 partition 分配(rebalance)。

副本与高可用

每个 partition leader + followers;写走 leader,follower 拉取复制。

  • acks=0: fire and forget
  • acks=1: leader 确认
  • acks=all/-1: ISR 确认
min.insync.replicas=2 时单副本故障仍安全。

消费语义

  • auto commit:可能丢或重复
  • 手动 commit:处理完再 commit offset,至少一次 + 幂等消费
  • exactly once:事务性 producer + consume-transform-produce(高级)

幂等与去重

Producer idempotent:PID + sequence 防 broker 重试重复。业务层仍用 唯一键 upsert

日志保留

按时间或大小 retention;compact topic 保留最新 key(changelog)。

性能

批量 send、压缩 lz4/zstd、零拷贝 sendfile。分区数不是越多越好,rebalance 成本上升。

运维监控

lag(消费落后)、under-replicated partitions、ISR shrink。与 week07-microservices-design 事件驱动架构结合讲。

对比 RabbitMQ

Kafka 擅 高吞吐日志流;RabbitMQ 路由灵活、低延迟任务队列。选型看吞吐与语义。

Week 6 总结

Redis 缓存 + MQ 异步 = 后端性能三板斧。自检:画 producer → broker → consumer 丢消息三个点及配置。

实战巩固与面试表达

本篇属于 8 周冲刺 week06-kafka-reliability 主题。复习时先闭卷回答 frontmatter 中三张 flashcard,再展开口述两个「为什么」:为什么这种方案能 work、边界失败时如何降级。与相邻章节对照:算法篇强调复杂度与模板,Go 篇强调工程默认写法,中间件篇强调线上故障案例。

动手与自检清单

用 25 分钟限时做 1 道相关练习题或画出一张架构/数据结构示意图;用 5 分钟写 STAR 片段说明你在项目里是否用过类似技术。记录 3 个面试追问及你的标准答法,存入 /zh/notebook/master-plan 笔记。若某点不熟,回到对应 /chapters 交互 Lab 重新走一遍流程,比死记卡片更有效。

易错点提醒

避免只背名词不会画图;避免只说优点不谈 trade-off(性能、一致性、运维成本至少提一项);避免把学习 Demo 说成百万 QPS 生产。回答时使用「场景 → 方案 → 结果 → 反思」四段式,体现工程成熟度。

补充要点

rebalance 触发 consumer 停顿,静态 membership 缓解。事务性消费 read-process-write 同一事务。监控 consumer lag 告警。压缩与 batch 平衡延迟。

知识卡片

问题

Kafka 分区的作用?

点击翻转查看答案

答案

并行读写扩展吞吐;同 partition 内有序;consumer group 内一 partition 同时只被一个 consumer 消费。

问题

ISR 是什么?

点击翻转查看答案

答案

In-Sync Replicas 与 leader 差距在阈值内的副本集合;leader 挂掉从 ISR 选新 leader,防落后副本丢数据。

问题

producer acks=all 含义?

点击翻转查看答案

答案

leader 等待 ISR 全部确认才返回;配合 min.insync.replicas 降低单副本 ack 丢消息风险。