Kafka09-速答-尚硅谷

6-Kafka速答

### 文章目录

  • [6-Kafka速答](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [@[toc]](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.1 Kafka 核心组件](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.2 偏移量三剑客](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.3 Controller 选举(ZK 模式)](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.4 副本集合](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.5 Producer 发送流程(简)](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.6 ACK 应答策略](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.7 消息重复 & 丢失根因](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.8 Follower 拉取 Leader](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.9 Consumer 拉取消息](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.10 消费者重复 / 丢失](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)
  • [6.11 全局有序保证](#文章目录 6-Kafka速答 @[toc] 6.1 Kafka 核心组件 6.2 偏移量三剑客 6.3 Controller 选举(ZK 模式) 6.4 副本集合 6.5 Producer 发送流程(简) 6.6 ACK 应答策略 6.7 消息重复 & 丢失根因 6.8 Follower 拉取 Leader 6.9 Consumer 拉取消息 6.10 消费者重复 / 丢失 6.11 全局有序保证)

6.1 Kafka 核心组件

  • Broker:Kafka 服务器进程
  • Topic:逻辑消息队列
  • Partition:Topic 物理分片
  • Replica:分区副本
  • Leader / Follower:副本角色
  • Controller:集群"总管" Broker
  • ZK:旧版依赖 ZooKeeper 选举 Controller
  • Producer / Consumer / Consumer Group:生产与消费端

6.2 偏移量三剑客

缩写 全称 含义 可见性
LSO Log Start / Stable Offset ① 日志文件起始偏移量(文件名数字)<br>② 事务隔离级别可见性边界(read_committed 用) 事务型消费者
LEO Log End Offset 当前分区下一条待写入位置 内部使用
HW High Watermark 消费者可见"高水位",< HW 的数据才允许被消费 所有消费者

6.3 Controller 选举(ZK 模式)

  1. 所有 Broker 监听 /controller 临时节点
  2. 谁创建成功谁当选;节点消失即触发重新选举
  3. 纪元(epoch)+1,防止脑裂

6.4 副本集合

  • AR = Assigned Replicas:分区全部副本
  • ISR = In-Sync Replicas:正在同步的副本(含 Leader),满足 replica.lag.time.max.ms
  • OSR = Out-of-Sync Replicas:落后副本
  • 动态伸缩:副本达标从 OSR→ISR,落后从 ISR→OSR

6.5 Producer 发送流程(简)

  1. 序列化 → 分区器选分区 → 累加器缓存
  2. Sender 线程批量发送 → 对应分区 Leader
  3. 等待 ACK → 更新元数据 / 重试

6.6 ACK 应答策略

acks 含义 吞吐 可靠性
0 发到网络缓冲区即返回
1 Leader 写盘即返回
-1/all ISR 全部写盘才返回 高(默认)

> 幂等 / 事务必须 acks=-1 且开启重试


6.7 消息重复 & 丢失根因

  • 丢失:禁重试 + 网络异常 / Leader 宕机
  • 重复:重试时网络抖动导致重复发送
  • 解决
    • 会话内重复:开启幂等(enable.idempotence=true)
    • 跨会话重复:使用事务 Producer

6.8 Follower 拉取 Leader

Follower 周期性发送 FetchRequest(携带当前 LEO)→ Leader 按 HW 截断数据返回 → Follower 写盘 → 更新自身 LEO → Leader 更新 HW


6.9 Consumer 拉取消息

Consumer 发送 FetchRequest(携带 offset)→ Broker 按 offset 顺序读日志 → 返回消息 → 本地处理 → 定时(或手动)提交 offset


6.10 消费者重复 / 丢失

  • 重复:自动提交间隔内崩溃,重启后从上次已提交 offset 重新消费
  • 丢失:已提交 offset 但消息未处理完即崩溃
  • 对策
    • 手动同步 commitSync / 异步 commitAsync
    • 消费-处理-提交原子化(幂等处理或事务)

6.11 全局有序保证

  1. 生产有序
    • 单分区 + 序列号 + 在途请求缓冲区 ≤5
  2. 存储有序
    • 同一分区顺序追加写日志
  3. 消费有序
    • 单分区仅被组内一个消费者按 offset 顺序读取
      > 多分区无法保证全局有序,只能分区内有序
相关推荐
Devin~Y12 小时前
大厂Java面试实录:Spring Boot微服务 + Redis缓存 + Kafka消息队列 + Prometheus链路追踪 + RAG向量检索
java·spring boot·redis·spring cloud·kafka·rabbitmq·spring mvc
阿坤带你走近大数据12 小时前
Kafka的基本概念,基本用法及常见使用场景
分布式·kafka
Lyyaoo.13 小时前
Kafka快速入门
分布式·kafka
喝醉酒的小白1 天前
Kafka 集群应急故障排查手册
分布式·kafka
无籽西瓜a1 天前
【西瓜带你学Kafka | 第八期】 Kafka的主从同步、消息可靠性、流处理与顺序消费(文含图解)
java·分布式·后端·kafka·消息队列·mq
qqVHU1 天前
kafka笔记
笔记·分布式·kafka
醉颜凉1 天前
Kafka 消息过期时间设置与清理机制全解析
分布式·kafka·linq
Jinkxs1 天前
SkyWalking - Kafka _ RabbitMQ 消息链路追踪支持
kafka·rabbitmq·skywalking
犬小哈1 天前
滴滴二面:你项目为什么选择 RocketMQ,而不是 Kafka? 我:支支吾吾....
分布式·kafka·rocketmq
Jinkxs1 天前
Kafka - 日志刷盘策略优化:sync.ms、flush.messages配置
分布式·kafka