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 顺序读取
      > 多分区无法保证全局有序,只能分区内有序
相关推荐
DemonAvenger4 天前
Kafka性能调优:从参数配置到硬件选择的全方位指南
性能优化·kafka·消息队列
yumgpkpm5 天前
AI视频生成:Wan 2.2(阿里通义万相)在华为昇腾下的部署?
人工智能·hadoop·elasticsearch·zookeeper·flink·kafka·cloudera
予枫的编程笔记5 天前
【Kafka高级篇】避开Kafka原生重试坑,Java业务端自建DLQ体系,让消息不丢失、不积压
java·kafka·死信队列·消息中间件·消息重试·dlq·java业务开发
倚肆5 天前
在 Windows Docker 中安装 Kafka 并映射 Windows 端口
docker·kafka
Sheffield5 天前
如果把ZooKeeper按字面意思比作动物园管理员……
elasticsearch·zookeeper·kafka
雪碧聊技术5 天前
kafka的下载、安装、启动
kafka
予枫的编程笔记5 天前
【Kafka高级篇】Kafka监控不踩坑:JMX指标暴露+Prometheus+Grafana可视化全流程
kafka·grafana·prometheus·可观测性·jmx·kafka集群调优·中间件监控
星辰_mya6 天前
消息队列遇到Producer发送慢
分布式·kafka
AutoMQ6 天前
一行配置让你的 Apache Kafka RTO 缩短一半
kafka