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

通过分布式系统的视角看Kafka

希望这篇文章能对我有意义
2025年8月16日
以一个分布式系统的视角看kafka,kafka就不会只是一个生产者消费者模型那么简单。
以下都是一些

服务发现,服务注册

kafka中会有KRaft 元数据管理(取代 ZooKeeper)进行服务发现与注册
用于管理分区状态

服务调用

服务调用就是consumer和producer。

远程服务调用

该分布式内交互方式是发送数据以及消费数据,方式就是Http

负载均衡

操作的中心就是Partition
一个partition对应一个consumer,一组consumer共用一个offset,这个offset存储在partition内。
一个合理的负载均衡策略可以保证开发的稳定进行,常见的kafka partition负载均衡策略(分区策略)是RangeAssignor 策略(时间分区),RoundRobinAssignor 策略(轮询分区),StickyAssignor 策略(原有的分配结果不变,新增的partition会分给原有consumer)

容错机制

对于kafka,容错就是ISR机制(broker容错),生产者ACK机制,消费者的心跳检测与offset机制

常见的容错机制如下:

容错策略核心思想适用场景典型实现系统
Failover主故障切换备份,支持重试读操作、幂等服务HDFS、Dubbo110
Failfast失败立即报错,不重试非幂等写操作(支付)Dubbo、Java集合810
Failsafe忽略异常,保主流程日志、监控等旁路逻辑Dubbo710
Failback异步存储+定时重试最终一致性(库存同步)Dubbo、消息队列37
Forking并行调用,任一成功即返回高可用读操作Dubbo710
Broadcast广播所有节点,全部成功才成功配置同步、缓存更新Dubbo、Cassandra37

一致性算法

数据一致性

一致性算法保证分布式系统下数据不被丢失,重心就在于broker
如果Leader节点挂掉,就会触发Controller 选举(基于 Raft 协议),过于落后的Follower不会再参与到选举中

消费一致性

HW(高水位线)机制:标识已提交消息的偏移量,消费者仅能读取HW以下数据,避免脏读
Leader Epoch:防止脑裂场景下数据不一致,新Leader基于Epoch号截断旧数据

日志、链路调用、指标监控

日志:
kafka的数据就是日志,

链路追踪:
kafka自身不支持链路追踪能力

端到端延迟分析:结合外部工具(如Prometheus+Grafana)监控生产→Broker→消费全链路时延38。

监控:
Kafka 通过 JMX(Java Management Extensions) 暴露丰富运行时指标,是监控体系的核心基础:

推荐阅读

  1. Kafka stream最全方法及用法说明(附带案例)
  2. Kafka分区分配策略:深入剖析与实战指南
  3. Kafka消息路由分區機制深度解析:架構設計與實現原理
  4. 从分布式AKF原则的角度看Kafka的架构设计
  5. 分布式系统架构3:服务容错
  6. 学习 Kafka 入门知识看这一篇就够了!(万字长文)
  7. 基于两级Flume+Kafka的日志采集架构
http://www.lryc.cn/news/625491.html

相关文章:

  • Lua学习记录 - 自定义模块管理器
  • 机械设备制造行业物联网智能化升级改造方案
  • 【habitat学习一】Habitat-Lab 配置键文档详解(CONFIG_KEYS.md)
  • 前端多环境变量配置全攻略:开发 / 测试 / 生产自动切换实战
  • APM32芯得 EP.29 | 基于APM32F103的USB键盘与虚拟串口复合设备配置详解
  • 清空 github 仓库的历史提交记录(创建新分支)
  • HUD抬头显示器太阳光模拟器设备用于杂散光测试介绍
  • 第4章 React状态管理基础
  • 【SpringBoot】Dubbo、Zookeeper
  • QT之QWaitCondition降低cpu占用率,从忙等待到高效同步
  • Qt——文件操作
  • Qt原对象系统工作机制
  • 基于 PyTorch 模型训练优化、FastAPI 跨域配置与 Vue 响应式交互的手写数字识别
  • SpreadJS 协同服务器 MongoDB 数据库适配支持
  • JavaSSM框架从入门到精通!第二天(MyBatis(一))!
  • EasyExcel 合并单元格最佳实践:基于注解的自动合并与样式控制
  • AI硬件英伟达选购的建议。
  • SSH 使用密钥登录服务器
  • 服务器无公网ip如何对外提供服务?本地网络只有内网IP,如何能被外网访问?
  • Netty内存池中ChunkList详解
  • 库卡机器人tag焊接保护气体流量控制系统
  • 基于SpringBoot的停车场管理系统【2026最新】
  • 在Ubuntu上安装并使用Vue2的基本教程
  • ComfyUI部署Wan2.2,开放API,文生视频与图生视频
  • Diamond开发经验(1)
  • Unity进阶--C#补充知识点--【C#各版本的新功能新语法】C#1~4与C#5
  • 【科研绘图系列】R语言绘制多组火山图
  • 腾讯混元3D系列开源模型:从工业级到移动端的本地部署
  • Java:枚举的使用
  • arcgis-空间矫正工具(将下发数据A的信息放置原始数据B的原始信息并放置到成果数据C中,主要按下发数据A的范围)