Kafka 详细解读

打印 上一主题 下一主题

主题 1769|帖子 1769|积分 5307

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

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 开启「夺权模式」(像极了组长告假时练习生抢电脑改代码)

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


  • 需求诞生(Producer 发消息)
    产品经理(Producer)拍脑袋想出新需求 → 按 Key 哈希到某个 Partition → 扔给对应技能组(Broker)
  • 需求落地(Broker 存数据)
    技能组把需求文档(消息)存到硬盘 → Leader 步调员(Partition Leader)同步给练习生(Follower)
  • 需求验收(Consumer 消费)
    测试组(Consumer Group)从不同 Partition 领使命 → 摸鱼党 A 测 Partition 0,摸鱼党 B 测 Partition 1
  • 容灾练习(Leader 挂了)
    Leader 步调员突然猝死 → HR(ZooKeeper)发起告急选举 → 手速最快的练习生(ISR Follower)上位
  • 数据安全(副本同步)
    新 Leader 疯狂同步需求文档 → 跟不上节奏的练习生被踢出 ISR(「周报写不完?明天不消来了!」)

Kafka の 职场生存哲学



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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表