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

Kafka 详细解读


1. Producer(生产部卷王)

职责:往 Kafka 里疯狂输出数据,KPI 是「日抛式消息海啸」
职场人设

  • 白天开会画饼,深夜写周报的奋斗逼,口头禅是「这个需求今晚必须上线!」
  • 代码里的「福报」:异步发送、批量打包、压缩数据(把 100 条消息压成 1 条发),美其名曰「降本增效」

设计原理

  • 不要等待确认:默认异步发送,像极了「工作群里@老板后立刻假装下线」
  • 数据分片甩锅术:通过 Key 把数据哈希到不同 Partition(相当于把需求拆成 N 个子任务甩给不同同事)
  • 重试狂魔:如果某个 Broker(服务器)挂了,自动切换路线,像极了「微信找 A 同事不回复,秒切 B 同事」

必杀技

  • acks=all:要求所有副本确认后才算成功(相当于逼所有相关同事回复「收到」)
  • 自带缓冲区:消息先堆在内存,攒够一波再发(像极了一次性把一周的周报全发了)

2. Broker(运维部背锅侠)

职责:存数据、传数据、24小时待命,还要被甩锅
职场人设

  • 每天背黑锅的运维小哥,工位贴着「硬盘在人在,硬盘崩了提头来见」
  • 信仰是「顺序写日志,随机写提桶跑路」

设计原理

  • 硬盘就是护城河:所有数据按顺序追加到日志文件(像极了把需求文档按日期堆在桌面)
  • 零拷贝(Zero-Copy):直接从硬盘把数据扔给网卡,跳过内存(像极了跨部门协作不找中间人传话)
  • 分区存储:一个 Topic 的数据分散在不同 Broker(相当于把项目拆成模块分给不同小组)

骚操作

  • 水位控制:如果 Consumer 消费太慢,直接拒收 Producer 的数据(像极了「需求池爆炸时对产品经理关门放狗」)
  • 副本同步:Leader 把数据同步给 Follower,还要定期检查「你跟得上吗?」(像极了组长每天晨会灵魂拷问)

3. Topic(产品经理的分类癖)

职责:给数据打标签,搞「精细化运营」
职场人设

  • 每天把「用户画像」「行为日志」挂嘴边的产品经理,实际只会画脑图
  • 口头禅是:「这个需求要分三个版本迭代!」

设计原理

  • 逻辑概念物理隔离:Topic 在物理上被拆成多个 Partition(相当于把「年度OKR」拆成季度 KPI)
  • 生命周期管理:可以配置数据保留时间(比如7天),像极了「过期的需求文档直接扔回收站」

必杀技

  • Compact Topic:只保留每个 Key 的最新值(专治「需求反复横跳」的老板)
  • 分区数决定并发度:3 个 Partition 最多 3 个 Consumer 并行消费(像极了「一个项目组最多 3 人摸鱼」)

4. Partition(技术组自闭程序员)

职责:把 Topic 拆成多个有序队列,内部严格排队,外部各自为战
职场人设

  • 坐在角落戴降噪耳机写代码的程序员,绝不参与跨部门会议
  • 工位贴着「有序队列,禁止插队,违者删库跑路」

设计原理

  • Offset 编号系统:每条消息有唯一编号,像极了程序员给代码提交打 Tag
  • Leader 选举:如果 Leader 挂了,从 ISR(同步副本列表)选新 Leader(像极了组长请假时组员抢话语权)

职场潜规则

  • 一个 Partition 只能被一个 Consumer 消费(同一 Group 内),像极了「一个需求只能有一个接盘侠」
  • 不同 Partition 之间可以乱序,但内部必须有序(像极了「组内代码规范严格,但隔壁组随便写屎山」)

5. Consumer(测试部摸鱼党)

职责:从 Kafka 里读数据,还要假装自己很忙
职场人设

  • 每天挂着「测试环境」网页实际在刷淘宝的摸鱼达人
  • 口头禅是:「这需求有 Bug,打回重做!」

设计原理

  • Pull 模式:自己控制消费速度,像极了「每天只处理 10 个 Bug,多一个就装死」
  • 消费者组(Consumer Group):组内成员瓜分 Partition(像极了测试组内部推诿:「这个 Bug 归你测!」)

骚操作

  • Rebalance 风暴:当有 Consumer 加入或退出,全组停摆重新分活(像极了「新同事入职时全组开一下午欢迎会」)
  • Offset 提交:可以手动提交(像极了「每天下班前才提交代码」),自动提交可能丢数据(像极了「忘记保存文档直接关电脑」)

6. ZooKeeper(HR 部监控狂)

职责:管理 Broker 元数据、Consumer Offset(早期版本)、协调选举
职场人设

  • 每天用监控摄像头对着员工的 HR,小本本记满「谁迟到谁早退」
  • 口头禅是:「你的心跳呢?再不回复算你离职!」

设计原理

  • 临时节点(Ephemeral Node):Broker 和 Consumer 注册的节点是临时的,失联就删除(像极了「连续三天不交周报就踢出群聊」)
  • ZAB 协议:用分布式一致性算法保证数据安全,但速度慢得像「HR 走报销流程」

职场黑话

  • Watch 机制:监听节点变化,像极了 HR 在茶水间偷听八卦
  • 未来被取代:Kafka 正在用 KRaft 模式取代 ZooKeeper(像极了「公司空降新 HR 总监,旧派系瑟瑟发抖」)

7. 副本与 ISR(实习生备胎联盟)

职责:保证数据不丢,服务高可用
职场人设

  • 每天帮 Leader 干脏活的实习生,转正机会渺茫
  • 口头禅是:「Leader 的文件我备份了,随时能顶上!」

设计原理

  • ISR(In-Sync Replicas):只保留能跟上 Leader 节奏的副本(像极了「只给按时交周报的实习生转正机会」)
  • Unclean Leader 选举:ISR 全挂时,允许用非同步副本当 Leader(像极了「正式员工全阳了,让实习生顶班」)

职场潜规则

  • Follower 定期从 Leader 拉数据(像极了实习生偷看正式员工代码)
  • Leader 挂后,ISR 里的 Follower 开启「夺权模式」(像极了组长请假时实习生抢电脑改代码)

协作大戏:一场互联网需求流水线

  1. 需求诞生(Producer 发消息)
    产品经理(Producer)拍脑袋想出新需求 → 按 Key 哈希到某个 Partition → 扔给对应技术组(Broker)

  2. 需求落地(Broker 存数据)
    技术组把需求文档(消息)存到硬盘 → Leader 程序员(Partition Leader)同步给实习生(Follower)

  3. 需求验收(Consumer 消费)
    测试组(Consumer Group)从不同 Partition 领任务 → 摸鱼党 A 测 Partition 0,摸鱼党 B 测 Partition 1

  4. 容灾演习(Leader 挂了)
    Leader 程序员突然猝死 → HR(ZooKeeper)发起紧急选举 → 手速最快的实习生(ISR Follower)上位

  5. 数据安全(副本同步)
    新 Leader 疯狂同步需求文档 → 跟不上节奏的实习生被踢出 ISR(「周报写不完?明天不用来了!」)


Kafka の 职场生存哲学

  • 卷王法则:吞吐量至上!批量发送、顺序写盘、零拷贝,把 CPU 和硬盘往死里榨
  • 摸鱼奥义:消费者自己控制节奏,拒绝被 PUSH 需求压垮
  • 甩锅宝典:数据分片(Partition)+ 多副本(Replica),谁崩了都能找人背锅
  • 宫斗指南:ISR 动态调整 + Leader 选举,随时准备抢活上位

http://www.xdnf.cn/news/981.html

相关文章:

  • 合同管理Contract Management
  • PowerBI工具提示-将表悬浮在数据上方
  • 【英语语法】词法---数词
  • 服务器数据迁移指南
  • docker基本命令1
  • 21-算法打卡-哈希表-三数之和-leetcode(15)-第二十一天
  • 鸿蒙系统ArkTs代码复习1
  • 多线程使用——线程池
  • 基于opencv和PaddleOCR识别身份证信息
  • RIP动态路由,实现两台PC互通三个路由器,两台电脑
  • 成功案例|TRAP1 与 CAMSAP3:早期子宫内膜癌预后的新 “风向标”
  • Federated Feature Augmentation and Alignment
  • Linux卸载删除gitlab
  • Vmware esxi 给现有磁盘增加空间后并扩展系统里磁盘空间
  • 文件内容课堂总结
  • Webpack 插件开发
  • MYDB仿MySQL手写数据库项目总结
  • UML 状态图:解锁电子图书馆管理系统的高效设计
  • 经典文献阅读之--KISS-Matcher(快速且稳健的点云注册)
  • C语言中联合体(Union)和结构体(Struct)的嵌套用法
  • VS Code + GitHub:高效开发工作流指南
  • 前端vue监听 -watch
  • 基于Redis实现高并发抢券系统的数据同步方案详解
  • Redis 有序集合(Sorted Set)
  • Spark,序列化反序列化
  • Linux高级IO
  • 【Python爬虫实战篇】--爬取豆瓣电影信息(静态网页)
  • RS232 串行通信:C++ 实现指南
  • 微信小程序 == 倒计时验证码组件 (countdown-verify)
  • 5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命