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

简识Kafka集群与RocketMQ集群的核心区别

前记:各位潘安、各位子健/各位彦祖、于晏,文字较多,优先看目录。

Kafka集群与RocketMQ集群的核心区别及架构图例说明


一、核心区别对比

特性Kafka 集群RocketMQ 集群
设计目标高吞吐量实时日志流系统(如日志收集、大数据流水线)企业级复杂业务场景(如电商交易、金融订单),强调可靠性和功能多样性
架构复杂度依赖 ZooKeeper 管理元数据,组件较少但需维护额外协调服务模块化设计,NameServer 轻量级路由 + Broker 分层存储,无外部依赖
存储机制基于 Partition 的顺序日志文件,每个分区独立存储CommitLog(全局顺序写入) + ConsumeQueue(消费者索引),读写分离
消息传递模式支持广播和消费者组负载均衡,仅保证分区内顺序支持广播、顺序(全局/分区)、延时/定时消息、事务消息
事务支持支持分布式事务(0.11+版本),但功能较基础内置强事务机制(如两阶段提交),支持事务状态回查
扩展性扩展 Broker 需重新分配 Partition,可能短暂影响消费NameServer 动态路由,Broker 热插拔,扩展更平滑
吞吐量与延迟吞吐量更高(百万级/秒),延迟毫秒级,适合日志流吞吐量略低但更均衡,优化顺序消息和事务场景,延迟可控
高可用机制基于 Partition 副本(Leader-Follower),依赖 ZooKeeper 选举主从同步/异步复制,支持多 Master 多 Slave 集群,故障时自动切换
消息查询与回溯仅支持按 Offset 回溯支持按时间、Message Key 或 Tag 查询,灵活回溯

二、架构图例说明【🏁重点】

1. Kafka 集群架构

[Producer]  │  └─(发送消息)─→ [Broker 1] (Partition 1)  │  ├─(副本同步)─→ [Broker 2] (Partition 1副本)  │  
[ZooKeeper] ←─(元数据管理)─→ [Broker集群]  │  
[Consumer Group] ←─(拉取消息)─┘  
  • 核心组件
    • ZooKeeper:管理 Broker 注册、分区 Leader 选举及消费者组状态。
    • Broker:存储 Partition 数据,每个 Partition 为独立日志文件。
    • Producer/Consumer:通过 ZooKeeper 获取路由信息,实现消息分发与消费。

2. RocketMQ 集群架构

[Producer]  │  └─(路由查询)─→ [NameServer集群]  │  └─(返回路由表)─→ [Broker Master]  │  ├─(同步复制)─→ [Broker Slave]  │  
[Consumer Group] ←─(拉取消息)─┘  │  
[CommitLog] ←─(消息存储)─┘  
[ConsumeQueue] ←─(索引构建)─┘  
  • 核心组件
    • NameServer:无状态路由中心,管理 Broker 地址与 Topic 队列映射。
    • Broker:主从架构,Master 处理读写,Slave 异步/同步备份数据。
    • CommitLog:全局顺序写入消息体,ConsumeQueue 存储消费偏移索引。

三、适用场景推荐

  • Kafka

    • 日志流处理:如大数据分析、实时监控。
    • 事件驱动架构:需高吞吐的场景(如用户行为追踪)。
  • RocketMQ

    • 金融交易:强事务、顺序消息(如订单状态同步)。
    • 延时消息:如定时任务、优惠券过期提醒。

四、总结

  • Kafka:以高吞吐和生态成熟见长,适合数据流水线与日志场景。
  • RocketMQ:以功能全面和可靠性取胜,更适合复杂业务与企业级应用。

五、RocketMQ 的 Master-Slave 复制机制 

1. RocketMQ 主从复制的两种模式

RocketMQ 的 Broker 主从复制支持 异步复制(Async) 和 同步双写(Sync) 两种模式,但 默认是异步复制。它们的区别如下:

复制模式异步复制(Async)同步双写(Sync)
数据一致性主节点写入成功即返回,从节点异步复制主节点和从节点均写入成功后才返回响应
延迟低延迟(无需等待从节点)较高延迟(需等待从节点确认)
吞吐量高吞吐(无同步阻塞)较低吞吐(同步等待影响性能)
适用场景容忍少量数据丢失,追求高性能的场景金融级强一致性场景(如资金交易)
配置方式默认模式需显式配置 brokerRole=SYNC_MASTER

2. 为什么是异步复制?

在 RocketMQ 的 默认集群部署模式 中,主从复制是异步的,这是出于以下设计权衡:

  1. 性能优先

    • 异步复制的延迟更低、吞吐量更高,适用于大多数业务场景(如电商订单、日志传输)。

    • 如果强制同步复制,每次写入都需等待 Slave 节点完成磁盘持久化,性能可能下降 50% 以上。

  2. 容忍短暂数据不一致

    • RocketMQ 的异步复制模式下,主从节点之间会有短暂的数据差异(毫秒级),但在主节点故障时,通过 自动切换(HA) 到 Slave 节点,仍能保证服务可用性。

    • 对于非金融场景,短暂的数据不一致通常是可接受的。

  3. 灵活性与配置简化

    • 异步复制是 RocketMQ 的默认行为,无需额外配置即可快速部署。

    • 同步双写需要显式配置,且对网络稳定性要求极高(如跨机房部署时可能频繁超时)。


3. 同步双写(Sync)的适用场景

尽管默认是异步复制,RocketMQ 也支持同步双写(需配置 brokerRole=SYNC_MASTER),适用于以下场景:

  • 金融交易:如支付、转账,要求主从节点数据强一致,宁可牺牲性能也要保证数据不丢失。

  • 政府/军工系统:对数据安全性要求极高,可接受性能损失。

同步双写示意图
[Producer] │└─► [Broker-Master] ├─1. 写入 CommitLog(Master)├─2. 同步写入 CommitLog(Slave) → 等待 ACK└─3. 返回写入成功响应

4. 主从复制的底层实现

无论是异步还是同步复制,RocketMQ 的复制机制都基于以下逻辑:

  1. 物理存储分离

    • 所有消息统一写入 Master 的 CommitLog(物理文件),Slave 通过 长轮询 拉取 CommitLog 增量数据。

    • Slave 节点的 CommitLog 是 Master 的完整副本,但复制延迟取决于网络和负载。

  2. 故障切换(HA)

    • 当 Master 宕机时,Slave 会自动提升为新的 Master(需依赖 RocketMQ 的 HA 机制或运维脚本)。

    • 异步复制下,切换时可能丢失少量未复制的数据;同步双写下则无数据丢失。


5. 对比 Kafka 的 ISR 同步机制

Kafka 的 ISR(In-Sync Replicas) 机制是另一种高可用设计:

  • Kafka 要求 Producer 发送消息时,必须等待所有 ISR 副本确认写入,才返回成功。

  • 这种设计牺牲了一定性能,但保证了数据的强一致性。

Kafka ISR vs RocketMQ 主从复制
特性Kafka ISRRocketMQ 主从复制
数据一致性强一致(所有 ISR 副本确认)异步默认弱一致,同步双写强一致
性能影响较高(等待多个副本)异步模式性能高,同步模式性能较低
配置复杂度依赖 ZooKeeper 管理 ISR主从角色静态配置,无动态选举
适用场景实时计算、日志流业务消息、事务场景

6、总结

  • 为什么RocketMQ 可以是异步复制?
    RocketMQ 默认以性能优先,异步复制是开箱即用的配置,适合大多数场景。同步双写需显式启用,适用于强一致性要求的特殊场景。

  • 如何选择复制模式?
    根据业务需求权衡:

    • 异步复制:高吞吐、低延迟,容忍秒级数据不一致(如电商订单)。

    • 同步双写:强一致性,容忍性能损失(如金融交易)。

六、Kafka集群不同Broker的同名主题的相同分区副本复制机制

Kafka 集群中,不同 Broker 之间的同名主题的相同分区副本复制默认是异步复制,但支持通过生产者配置实现同步语义(即同步确认)。这种设计是 Kafka 在高吞吐量数据可靠性之间权衡的结果。以下是详细解释:


1. Kafka 的副本复制机制

(1) 副本角色

  • Leader 副本:负责处理生产者的写入请求和消费者的读取请求。

  • Follower 副本:从 Leader 副本异步拉取数据,保持与 Leader 的数据同步。

  • ISR(In-Sync Replicas):所有与 Leader 保持同步的副本集合(包括 Leader 自身)。

(2) 写入流程

  1. 生产者发送消息到 Leader:生产者将消息发送到 Topic 分区的 Leader 副本。

  2. Leader 本地持久化:Leader 将消息写入本地磁盘的 Log 文件。

  3. Follower 异步拉取数据:Follower 副本通过后台线程定期从 Leader 拉取新消息(Pull 模式)。

  4. Follower 确认同步:Follower 将消息写入本地磁盘后,向 Leader 发送 ACK。

  5. Leader 更新 ISR:Leader 维护 ISR 列表,若 Follower 长时间未同步,会被移出 ISR。

(3) 生产者的确认机制

生产者通过 acks 参数控制数据可靠性:

  • acks=0:生产者不等待任何确认(异步复制,可能丢失数据)。

  • acks=1(默认):Leader 写入本地 Log 后即返回成功(异步复制,但 Leader 故障可能丢失数据)。

  • acks=all(或 acks=-1:Leader 等待 ISR 中所有副本确认后才返回成功(同步语义)。


2. 为什么默认是异步复制?

Kafka 的副本复制机制默认是异步的(即 Follower 通过后台线程拉取数据),但通过 acks=all 可实现同步语义。这种设计基于以下原因:

(1) 高吞吐量

  • 异步复制不阻塞生产者:Follower 副本的同步在后台进行,Leader 无需等待 Follower 完成复制即可响应生产者,大幅提高吞吐量。

  • 适合日志、流处理场景:Kafka 最初设计用于高吞吐日志流处理,异步复制能更好地满足性能需求。

(2) 灵活的可靠性配置

  • 通过 acks 参数,业务方可根据场景选择:

    • 高性能模式acks=0 或 1):容忍少量数据丢失,适用于日志采集、监控数据。

    • 高可靠模式acks=all):要求所有 ISR 副本确认,适用于金融交易等强一致性场景。

(3) ISR 动态管理

  • 自动容错:若 Follower 副本同步过慢或故障,会被移出 ISR,避免影响整体性能。

  • 快速恢复:故障副本恢复后,可重新加入 ISR 并追赶数据。


3. 同步语义的实现(acks=all

当生产者配置 acks=all 时,Kafka 的副本复制表现为同步语义

  1. 生产者发送消息到 Leader。

  2. Leader 将消息写入本地 Log。

  3. Leader 等待 ISR 中所有副本完成同步(即收到 Follower 的 ACK)。

  4. Leader 确认消息写入成功,生产者收到响应。

尽管底层复制仍是 Follower 异步拉取数据,但通过 acks=all,Kafka 在逻辑上实现了类似同步复制的效果。


4. 与 RocketMQ 主从复制的对比

特性KafkaRocketMQ
复制模式异步复制 + 同步语义(acks=all默认异步复制,支持同步双写(需配置)
数据一致性保证依赖 acks 配置(all 时强一致)异步默认弱一致,同步双写强一致
性能影响异步模式高吞吐,同步模式性能下降异步模式高吞吐,同步模式性能下降
副本管理动态 ISR 列表,自动剔除故障副本静态主从配置,需手动干预故障切换
适用场景日志流、实时计算、灵活一致性场景事务消息、顺序消息、金融级强一致性

5. 为什么 Kafka 不采用纯同步复制?

  1. 吞吐量瓶颈
    若强制所有副本同步写入,网络延迟和磁盘 I/O 会成为瓶颈,无法支撑 Kafka 设计目标中的高吞吐量。

  2. 复杂故障处理
    同步复制对网络稳定性要求极高,跨机房或高延迟环境下易触发超时,导致频繁副本切换,运维复杂度高。

  3. ISR 动态平衡
    Kafka 的 ISR 机制允许副本短暂滞后,通过动态调整 ISR 列表,兼顾可靠性和性能。


6. 总结

  • Kafka 的副本复制是异步的:Follower 通过后台线程拉取数据,默认不阻塞生产者。

  • 支持同步语义:通过 acks=all 配置,可等待所有 ISR 副本确认,实现强一致性。

  • 设计哲学:在高吞吐量和数据可靠性之间提供灵活选择,适应不同业务场景。

(望各位潘安、各位子健/各位彦祖、于晏不吝赐教!多多指正!🙏)

相关文章:

简识Kafka集群与RocketMQ集群的核心区别

前记:各位潘安、各位子健/各位彦祖、于晏,文字较多,优先看目录。 Kafka集群与RocketMQ集群的核心区别及架构图例说明 一、核心区别对比 特性Kafka 集群RocketMQ 集群设计目标高吞吐量实时日志流系统(如日志收集、大数据流水线&a…...

制造行业CRM选哪家?中大型企业CRM选型方案

在当今竞争激烈的制造行业中,企业对于客户关系管理(CRM)系统的需求日益增强,高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在制造业 CRM 市场中,纷享销客和销售易都备受关注,且各自有着…...

R 语言科研绘图 --- 散点图-汇总

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

从零开始的网站搭建(以照片/文本/视频信息通信网站为例)

本文面向已经有一些编程基础(会至少一门编程语言,比如python),但是没有搭建过web应用的人群,会写得尽量细致。重点介绍流程和部署云端的步骤,具体javascript代码怎么写之类的,这里不会涉及。 搭…...

收到线上服务器出现cpu告警一般怎么排查?

当线上服务器出现CPU告警时,可以按照以下步骤进行系统性排查,逐步定位问题根源: 1. 快速确认CPU使用情况 命令工具:top # 实时查看CPU占用(按P排序进程) htop …...

Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持

作者:Hemant Malik 及 Joan Fontanals Martnez 探索如何使用 Elasticsearch Open Inference API 访问 Jina AI 模型。 我们在 Jina AI 的朋友们将 Jina AI 的嵌入模型和重新排名产品的原生集成添加到 Elasticsearch 开放推理 API 中。这包括对行业领先的多语言文本嵌…...

Docker下的Elastic search

一、安装 (一)Elastic search 1.创建配置文件 :我是在win系统中,创建文件【G:\dockermount\es\elasticsearch.yml】 添加【http.host: 0.0.0.0】 2. 拉取镜像:docker pull elasticsearch 3. 创建容器(注意我挂载的…...

Unity学习part4

1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作,更方便,画布与游戏窗口的比例一般默认相同 如图所示,图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式:屏幕空间--覆盖,指画布覆盖在游戏物体渲…...

Java笔记18

2-10-3Cookie&Session 1.会话跟踪技术概述 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次…...

进程概念、PCB及进程查看

文章目录 一.进程的概念进程控制块(PCB) 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序,而程序是存放在磁盘的,cpu要想执行程序的指…...

php session数据存储位置选择

PHP session 数据的存储位置可以通过配置文件或者代码来进行设置。默认情况下,session 数据是存储在服务器的文件系统中的。你可以将 session 数据存储在其他地方,例如数据库、缓存等。 基础概念 PHP session默认情况下将数据存储在服务器端的临时文件中…...

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托,由上至下、从应用层到基础设施介绍协议。 1.应用层: HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…...

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…...

数据结构之二叉树的定义及实现

1. 树的概念 主要的定义: 节点的度:一个节点含有的子树的个数称为该节点的度;如上图:A的为6 叶节点或终端节点:度为0的节点称为叶节点;如上图:B,C,H,I等节点…...

Rust语言基础知识详解【一】

1.在windows上安装Rust Windows 上安装 Rust 需要有 C 环境,以下为安装的两种方式: 1. x86_64-pc-windows-msvc(官方推荐) 先安装 Microsoft C Build Tools,勾选安装 C 环境即可。安装时可自行修改缓存路径与安装路…...

SQLMesh 系列教程9- 宏变量及内置宏变量

SQLMesh 的宏变量是一个强大的工具,能够显著提高 SQL 模型的动态化能力和可维护性。通过合理使用宏变量,可以实现动态时间范围、多环境配置、参数化查询等功能,从而简化数据模型的开发和维护流程。随着数据团队的规模扩大和业务复杂度的增加&…...

【Deepseek】Linux 本地部署 Deepseek

前言 本文介绍在 Linux 系统上部署 Deepseek AI。本文教程是面向所有想体验 AI 玩家的一个简易教程,因此即使是小白也可以轻松完成体验,话不多说立马着手去干。 [注]:笔者使用的系统为 Ubuntu 24.10 1. 关于 ollama Ollama 是一款开源应用…...

机器学习数学通关指南——拉格朗日乘子法

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话总结 拉格朗日乘子法…...

git,bash - 从一个远端git库只下载一个文件的方法

文章目录 git,bash - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git,bash - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库&#xf…...

臻识相机,华夏相机,芊熠车牌识别相机加密解密

臻识,华夏,芊熠这三种车牌识别相机解密我都试过了,可以正常解密成功,其它品牌我暂时没有测试。超级简单,免费的,白嫖无敌! 流程: ①:先导出配置文件,例如我以…...

网络安全与措施

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 # 网络安全问题概述 1) 数据安全 访问(授权访问);存储(容灾、备份或异地备份等) 2) 应用程序 不能…...

前后端分离系统架构:基于Spring Boot的最佳实践

前后端分离系统架构图描绘了一个基于Springboot的前端后台分离的系统架构。它强调了前端(客户端)与远程(服务器)的解耦,通过API接口进行交互,分别独立开发和部署。 前后端分离系统架构图 从上到下&#xff…...

提示语链与CIRS模型:解锁AI内容生成的新范式

文章目录 一、提示语链:从单点提示到系统化引导1.1 什么是提示语链?1.2 提示语链的核心特征1.3 提示语链的设计步骤1.4 提示语链的优势 二、CIRS模型:从上下文到综合优化2.1 什么是CIRS模型?2.2 CIRS模型的四个环节2.3 CIRS模型的…...

【Python + STM32 实现外设控制的从0-1实例教程-适合新手】

一、环境搭建与固件烧录 1. 硬件准备 STM32开发板:推荐支持 MicroPython 的型号(如STM32F4 Discovery、NUCLEO-F411RE)。USB转TTL模块:用于串口通信(如CH340、CP2102)。外设模块:LED、温湿度传感器(如DHT11)等。2. 软件准备 MicroPython固件:从MicroPython官网下载对…...

内外网文件传输 安全、可控、便捷的跨网数据传输方案

一、背景与痛点 在内外网隔离的企业网络环境中,员工与外部协作伙伴(如钉钉用户)的文件传输面临以下挑战: 安全性风险:内外网直连可能导致病毒传播、数据泄露。 操作繁琐:传统方式需频繁切换网络环境&…...

超导量子计算机的最新进展:走向实用化的量子革命

超导量子计算机的最新进展:走向实用化的量子革命 大家好,我是 Echo_Wish,今天我们来聊聊科技圈最炙手可热的话题之一——超导量子计算机。近年来,量子计算领域可谓是风起云涌,而超导量子计算机作为主流路线之一,已经在学术界和工业界取得了不少突破性进展。 那么,超导…...

DeepSeek掘金——SpringBoot 调用 DeepSeek API 快速实现应用开发

Spring Boot 实现 DeepSeek API 调用 1. 项目依赖 在 pom.xml 中添加以下依赖: <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>&l…...

Oracle:执行DELETE语句长时间无响应的排查步骤及解决方案

目录 [TOC](目录)**一、检查锁状态与阻塞会话****二、检查未提交事务****三、分析执行计划与SQL性能****四、检查触发器与约束****五、资源竞争与系统瓶颈****六、其他高级排查手段****七、紧急处理流程****总结** 以下是针对Oracle执行DELETE语句长时间无响应的排查步骤及解决…...

centos服务器巡检脚本

服务器巡检脚本 系统负载shell脚本python将txt文件转换成excel&#xff0c;不正常巡检结果标记红色 系统负载shell脚本 #!/bin/bash#文件路径 path"/root/monitor.txt"#yum -y install bc sysstat net-tools lrzsz #获取主机名 system_hostname$(hostname | awk {pr…...

抖音试水AI分身;腾讯 AI 战略调整架构;百度旗下小度官宣接入DeepSeek...|网易数智日报

抖音试水AI分身&#xff0c;字节旗下AI智能体平台扣子已与抖音打通&#xff0c;相关功能内测中 2月19日消息&#xff0c;钛媒体App独家获悉&#xff0c;字节旗下AI智能体开发平台扣子&#xff08;Coze&#xff09;已与抖音打通&#xff0c;抖音创作者可在扣子智能体平台打造AI分…...