当前位置: 首页 > news >正文

详细介绍:Kafka09-速答-尚硅谷

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 全局有序保证

6.1 Kafka 核心组件

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

6.2 偏移量三剑客

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

6.3 Controller 选举(ZK 模式)

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

6.4 副本集合


6.5 Producer 发送流程(简)

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

6.6 ACK 应答策略

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

> 幂等 / 事务必须 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 消费者重复 / 丢失


6.11 全局有序保证

  1. 生产有序
    • 单分区 + 序列号 + 在途请求缓冲区 ≤5
  2. 存储有序
    • 同一分区顺序追加写日志
  3. 消费有序
    • 单分区仅被组内一个消费者按 offset 顺序读取
      > 多分区无法保证全局有序,只能分区内有序
http://www.gsyq.cn/news/15674.html

相关文章:

  • 前端安全障碍深度解析:从原理到实践的全方位防护指南
  • node菜单服务引起的后台异常表象到运维释放从库的数据库连接及驱动修改配置,重新部署生效
  • 深入解析:从零起步学习Redis || 第四章:Cache Aside Pattern(旁路缓存模式)以及优化策略
  • 详细介绍:SpringCloud API Gateway2.0如何解决docker中应用间IP漂移的正确手法
  • 251004
  • gradle Cause: zip END header not found
  • 【性质】CF689D Friends and Subsequences
  • Arduino+数码管 = 量电压 | A+B problem | alphabet
  • 详细介绍:【数据库知识】TxSQL 主从数据库同步底层原理深度解析
  • 完整教程:AI时代如何高效学习Python:从零基础到项目实战de封神之路(2025升级版)
  • cannot resolve method add in T 及 T 泛型类型生成Excel文件,区别是数据Model不同
  • 测试环境elasticSearch数据泄露排查
  • PocoEmit遥遥领先于AutoMapper之打通充血模型的任督二脉
  • Linux基础开发工具 --- vim - 详解
  • 【Clion】【文件编码】Clion内置控制台中文字体乱码的解决方案及编码格式调整
  • Qt纯代码实现智能安防集中管理平台/楼宇对讲管理系统/门禁管理/视频监控
  • DaYe-PhotoStudio-2 v2.0.0 安装教程(64位/AMD64)详细步骤
  • 威胁狩猎实战:终端攻击行为分析与检测
  • 2024年全国大学生信息安全竞赛安徽省赛网络高效的系统建设与运维赛项-网络构建真题
  • 实用指南:基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现
  • 基于Hadoop的肾脏疾病风险分析系统架构设计精髓 - 实践
  • const在for用不了
  • 某工程师入职华为,职级比较高,但还看不懂代码,有点尴尬
  • 使用Silobase在几分钟内快速部署后端API
  • 【光照】[各向异性]在UnityURP中的实现
  • 基于HAL库和中断的LED流水灯
  • 5_flutter UI框架选型
  • 如何给 Claude 中的网页做截图
  • MySQL.Data.DLL 官网下载方法 2025
  • 趣题记