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 顺序读取
      > 多分区无法保证全局有序,只能分区内有序
相关推荐
闻哥4 小时前
Kafka高吞吐量核心揭秘:四大技术架构深度解析
java·jvm·面试·kafka·rabbitmq·springboot
indexsunny17 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
TTBIGDATA17 小时前
【Atlas】Ambari 中 开启 Kerberos + Ranger 后 Atlas Hook 无权限访问 Kafka Topic:ATLAS_HOOK
大数据·kafka·ambari·linq·ranger·knox·bigtop
岁岁种桃花儿21 小时前
Kafka从入门到上天系列第一篇:kafka的安装和启动
大数据·中间件·kafka
TTBIGDATA2 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger
indexsunny2 天前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
编程彩机2 天前
互联网大厂Java面试:从Spring Boot到分布式事务的技术场景解析
spring boot·kafka·分布式事务·微服务架构·java面试·技术解析
没有bug.的程序员2 天前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融
yumgpkpm2 天前
华为昇腾300T A2训练、微调Qwen过程,带保姆式命令,麒麟操作系统+鲲鹏CPU
hive·hadoop·华为·flink·spark·kafka·hbase
ApachePulsar2 天前
演讲回顾|谙流科技在 Kafka on Pulsar 之上的探索
分布式·科技·kafka