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

【车联网kafka】Kafka核心架构与实战经验(第二篇)

        Kafka是一个分布式消息系统,设计时就像一个高效的“仓储转发中心”,核心目标是确保数据(类比“货物”)可靠、高效地流动,同时对外屏蔽复杂性。

想象一个大型电商仓库(类比Kafka集群):

  • 仓库:整个仓储中心,代表Kafka集群。
  • 货物:订单包裹(类比Kafka中的消息)。
  • 配送员:外部人员(类比生产者或消费者),他们只需知道“从哪里取货”或“往哪里送货”,不需要了解仓库内部运作。
  • 货架分区:仓库划分为多个区域(类比Kafka的分区),每个区域存储特定类别的货物(如电子产品区、服装区)。
  • 管理员系统:仓库的智能管理系统(类比Kafka的broker和ZooKeeper),负责协调货物存储、备份和检索。

我们在仓库中往往也需要考虑的情景:

  1. 对外屏蔽复杂取货逻辑 :配送员只需扫描订单二维码就能取货或送货,不需要知道仓库的库存管理、分区策略。仓库前台(类比Kafka API)提供一个统一接口,屏蔽了后台的货架调度、路径优化等细节

  2. 存储货物故障时的风险最小化:仓库有多个备用货架(类比副本)。如果主货架区着火,系统自动切换到备用区取货,配送流程不间断。仓库还定期演练故障恢复(类比Kafka的Leader选举)

  3. 货物备份与快速补全:仓库在另一个区域(如地下仓库)存储关键货物的备份(类比副本)。如果洪水冲毁主仓库,系统能立即从备份区调货补发,顾客不会感知延迟。仓库还使用“快照”技术(类比Kafka的日志快照)定期备份库存状态

  4. 备货数据设置(平衡备份量) 仓库根据销售预测设置库存水位(类比保留策略)。例如,畅销品备份多,冷门品备份少;系统自动清理滞销货物(类比数据过期删除)。避免仓库爆仓或断货

  5. 最大存储空间管理 仓库货架设计为可扩展模块(类比日志段)。当一区满时,自动启用新区域;旧区货物归档或清理(类比日志压缩)。仓库建筑可扩建(类比集群扩展)

  6. 快速找到货物 仓库使用条形码和GPS定位(类比offset)。配送员输入订单号,系统直接导航到货架位置(类比消费者指定offset消费)。索引系统确保秒级找到货物

  7. 多个提取口设置与快速出库 仓库有多个装卸口和传送带(类比Kafka的批量写入和零拷贝技术),货物进出高速处理。

  8. 仓库分布部署与随时增加新的仓库: 仓库可添加新货架区或分仓(类比添加broker),系统自动重分配货物

  9. 货物顺序保证与一致性: 货物按入库时间顺序存放(类比分区内消息有序),同一订单的包裹总在相邻货架(类比分区键保证相关消息在同一分区)

  10. 货物提取者组管理: 多个取货员组成团队(类比消费者组),每人负责不同区域(类比分区分配),避免重复取货

  11. 仓库容错与自愈能力: 仓库监控系统(类比Kafka的Controller)检测货架故障,自动切换到备份

        等等都是仓储中心需要考虑的点,同时也是kafka需要考虑的核心内容,下面我们来介绍kafka如何进行处理和设计的。

kafka核心框架

核心角色与任务的对应关系

社团元素Kafka 组件 / 概念核心功能解读
长老团Zookeeper掌管社团 “规矩”,记录分区的 Leader 选举结果、集群元数据,协调各节点状态,确保权力交接有序。
扛把子Leader 节点                由分区节点中选出,负责处理该分区的读写请求,掌控 “堂口” 日常事务,是任务执行的核心主力。
地区堂主Follower 节点作为 Leader 的 “替身”,同步 Leader 的日志数据,一旦 Leader “出事”,立即顶上成为新 Leader。
江湖任务Topic代表一类特定的事务(如 “追查叛徒”“运送货物”),是消息的分类单位,所有相关操作围绕它展开。
执行任务小领导Partition(分区)每个 Topic(任务)下的细分单元,如同不同地区的堂口,各自负责一部分任务数据的存储与处理。
堂口账本日志文件(Log)记录分区的所有消息数据,如同社团的账本,既用于追溯任务执行过程,也为 “后备力量” 提供同步依据。

Kafka 版 “社团任务执行局” 运行手册

想搞懂 Kafka 咋工作的?把它当成香港电影里的社团任务执行局就好理解啦!从 “接活儿” 到 “干活”,每个角色都有专属戏码,咱逐个拆解 ——

一、消息生产者:社团 “情报员”

左边这堆 ProducerA/B/C ,就是社团派出去 “搞情报、递任务” 的小弟!发现新任务(生产消息),比如要 “干掉 B 社团负责人”,直接把任务详情打包,丢给社团核心部门(消息存储),等着后续安排。

二、消息存储:社团核心 “任务指挥部”

这是整个流程的核心,就像社团开大会统筹任务,又分三层架构,每层都有独特分工:

1. 长老团(Zookeeper1/2/3):幕后话事人

Zookeeper 这仨 “穿制服的”,是社团隐藏大佬!不直接动手,但负责选 “扛把子”—— 哪个 Broker(分区老大)能当 Leader 管事儿,得听长老团拍板。任务咋分配、谁当主力,都由他们定规矩,稳稳把控大局。

2. 分区老大团(Broker1/2/3):前线指挥官

Broker 就是社团在各地的 “堂主”,Broker1 是 “社团老大(主)”,Broker2/3 是 “地区老大(辅)” ,共同组成 “分区指挥部”。

举个例子:现在要执行 “干掉 B 社团负责人”(Topic A 任务),Broker1 会派出最能打的 partition0 当 “主力打手”,Broker2 派 partition1 、Broker3 派 partition2 当 “辅助打手”。同时,还得安排 “后备打手”(比如 Broker1 里存着 partition1/2 的备胎),万一主力折了,后备直接顶上,保证任务不断!

简单说:Topic 是 “任务名称”(比如 “干掉 B 社团负责人”),Partition 是 “具体执行人 / 备胎”,Leader(主力)挂了,Follower(备胎)无缝接班,这就是 Kafka 高可用的精髓!

3. 落地执行团(日志 & segment):社团 “执行队 + 任务账本”

最底层这堆 segment 和日志,就是社团真正 “动手干活 + 记功簿” 的组合:

  • segment 拆分:把大任务拆成小环节!比如 “干掉 B 社团”,得先 “盯梢”“追踪”“执行”“收尾”,每个环节对应一个 segment ,分工越细越好执行。
  • 日志(log):详细记录任务细节!啥时候动手(timestamp)、任务到哪一步(relativeOffset)、具体执行人位置(position)… 全记在这堆 .index .log 文件里,既能复盘过程,又能让 “后备打手” 快速接手(同步日志信息)。

三、消息消费者:社团 “收尾人”

右边 customerA/B/C/D ,就是社团派去 “收尾” 的角色!指挥部把任务拆解、执行得差不多了,消费者就来领结果(消费消息),比如确认 “B 社团负责人已解决”,完成整个任务闭环。

四、完整流程:一场 “干掉 B 社团负责人” 的任务推演

  1. 情报输入Producer 小弟发现任务,把 “干掉 B 社团负责人” 写成 Topic A,丢给指挥部。
  2. 大佬定规矩:Zookeeper 长老团选好 Broker 里的 Leader(主力堂主),确定谁当打手(Partition 分配)。
  3. 任务拆解执行:Broker 指挥部派 partition0/1/2 当打手,拆分任务到 segment ,日志全程记录细节。
  4. 后备兜底:要是主力打手(Leader Partition)出意外,后备打手(Follower Partition)看日志补位,接着干!
  5. 收尾交差:任务执行到尾声,customer 小弟来领结果,确认任务完成,整个流程闭环!

这么一套 “社团任务执行局” 的戏码,Kafka 的消息生产、存储、消费逻辑是不是就好懂多啦?本质就是一群 “分工明确的小弟”,围绕 “任务(Topic)”,从 “接活” 到 “干活” 再到 “收尾”,靠长老团控大局、堂主带队执行、日志兜底补位,把复杂的分布式消息流程,演成一场香港电影里的社团任务大戏!

OK,今天就到这里,后续会把里面需要记录的点继续展开

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

相关文章:

  • 防火墙安全实验
  • 《秋招在即!Redis数据类型面试题解析》
  • Vue3+Vite项目如何简单使用tsx
  • SpringBoot+SpringAI打造智能对话机器人
  • MySQL 8.0 OCP 1Z0-908 题目解析(38)
  • Kafka Streams窗口技术全解析:从理论到电商实时分析实战
  • TTS语音合成|GPT-SoVITS语音合成服务器部署,实现http访问
  • Linux多线程线程控制
  • 前端核心技术Node.js(五)——Mongodb、Mongoose和接口
  • 计算机网络学习(一、Cisco Packet Tracer软件安装)
  • 计算机网络学习--------三次握手与四次挥手
  • diffusion原理和代码延伸笔记1——扩散桥,GOUB,UniDB
  • 【计算机网络】5传输层
  • 网络与信息安全有哪些岗位:(4)应急响应工程师
  • 【网络安全】等级保护2.0解决方案
  • 物联网与AI深度融合,赋能企业多样化物联需求
  • Redis实战(4)-- BitMap结构与使用
  • 基于单片机智能油烟机设计/厨房排烟系统设计
  • 用Python绘制SM2国密算法椭圆曲线:一场数学与视觉的盛宴
  • XML 用途
  • MVS相机+YOLO检测方法
  • 基于N32G45x+RTT驱动框架的定时器外部计数
  • 前端js通过a标签直接预览pdf文件,弹出下载页面问题
  • .NET 10 中的新增功能系列文章3—— .NET MAUI 中的新增功能
  • 《Java 程序设计》第 18 章 - Java 网络编程
  • C++面试5题--6day
  • LLC电源原边MOS管DS增加RC吸收对ZVS的影响分析
  • 开发避坑短篇(11):Oracle DATE(7)到MySQL时间类型精度冲突解决方案
  • PHP 5.5 Action Management with Parameters (English Version)
  • 专业鼠标点击器,自定义间隔次数