RocketMQ及和Kafka的区别

ops/2025/2/23 0:12:52/

目录

  • 1 从场景入手
  • 2 RocketMQ是什么?
  • 3 RocketMQ及和Kafka的区别
    • 3.1 在架构上做了减法
      • 3.1.1 简化协调节点
      • 3.1.2 简化分区
      • 3.1.3 底层存储
        • 3.1.3.1 Kafka底层存储
        • 3.1.3.1 RocketMQ底层存储
      • 3.1.4 简化备份模型
        • 3.1.4.1 Kafka备份模型
        • 3.1.4.2 RocketMQ备份模型
      • 3.1.5 RocketMq架构
    • 3.2 在功能上做加法
      • 3.2.1 消息过滤
      • 3.2.2 支持事务
      • 3.2.3 加入延时队列
      • 3.2.4 加入死信队列
      • 3.2.5 消息回溯

1 从场景入手

在这里插入图片描述

假设A服务过来一个请求,但是不想让B服务马上处理,需要等待一段时间才做处理,比如定时外卖的场景。
在这里插入图片描述
那如何处理上述问题,那就可以在服务之间加一个中间层。

2 RocketMQ是什么?

是国产自研的消息队列,是Apache的顶级项目
在这里插入图片描述
和Kafka一样都是消息队列

3 RocketMQ及和Kafka的区别

其实就是RocketMQ在Kafka的架构上做了一些架构上的调整
在这里插入图片描述

总结:在架构上做了减法,在功能上做了加法

3.1 在架构上做了减法

3.1.1 简化协调节点

zookeeper在Kafka架构中会和broker通信,维护Kafka信息,一个新的broker加入后,其他broker会立马感知它的加入。

在这里插入图片描述
像这种在分布式结构下让多个实例同时获取同一份信息的服务就是所谓的分布式协调服务
在这里插入图片描述

zookeeper不仅可用于服务注册和发现,还可以用于分布式锁管理配置管理等场景。
Kafka只用到部分场景,有点杀鸡用牛刀了!

下面是rocketMq的架构:
在这里插入图片描述

所以RocketMQ把zookeeper去掉,使用nameServer,用更轻量的方式管理消息队列的集群信息。

后来Kafka也发现了zookeeper过重的问题,从2.8.0版本移除zookeeper,通过broker之间加入一致性算法Raft实现同样的效果。

下面是Kafka的架构:
在这里插入图片描述
这就是所谓的Kraft或Quorum模式

3.1.2 简化分区

RocketMQ也会拆分多个分区,不叫partition,叫queue
在这里插入图片描述
kafka的partition中会存入完整消息,但是RocketMQ的queue中只存入一些简要信息,比如消息偏移offset,而消息的完整信息放到commitLog里,通过offset可以定位到commitLog的某条消息。

在这里插入图片描述
在Kafka中消费者只需要直接从partition中读取消息,然而在RocketMQ中,消费者需要先从queue中读到offset的值,再跑到commitLog上将完整的数据读取出来,也就是读取了两次
在这里插入图片描述
看起来Kafka的设计更高效,但是为何RocketMQ要用此设计?

3.1.3 底层存储

3.1.3.1 Kafka底层存储

在这里插入图片描述

Kafka下有partition,每个partition是由多个segment组成的,生产者发送数据也就是在往segment中写入数据,就是往磁盘做写入,磁盘的顺序写入会比随机写入快很多,性能差距很大,可高达几十倍。
为了提升性能,Kafka对于每个segment的写入也都是顺序写。
在这里插入图片描述

但是当topic变多了,Kafka下的partition也会增多,对应的segment文件也会变多,同时写多个topic下的partition就相当于写多个文件,不同的topic下的文件存放在磁盘的不同地方,这样的话即使segment内部是顺序写,但是针对于不同topic下的文件是随机写。

3.1.3.1 RocketMQ底层存储

在这里插入图片描述

为了缓解同时写多个文件带来的随机写的问题,RocketMQ将单个broker地下的多个topic数据,全部写到“一个”逻辑文件CommitLog上,这就消除了写多个文件的随机写问题,将所有写操作变成了顺序写,提升了RocketMQ在多topic场景下的写性能。

3.1.4 简化备份模型

3.1.4.1 Kafka备份模型

在这里插入图片描述
底层就是同步segment数据

3.1.4.2 RocketMQ备份模型

在这里插入图片描述
在这里插入图片描述

RocketMQ直接同步commitLog数据,以broker为单位区分主从

3.1.5 RocketMq架构

在这里插入图片描述

3.2 在功能上做加法

3.2.1 消息过滤

在这里插入图片描述

Kafka支持通过topic将数据进行分类
在这里插入图片描述
场景:
当我们有如上图4、5、6、7一共4条数据,他们有不同类型,如果我们只想要vip6的数据。

kafka需要消费topic为用户数据的所有消息,再将vip6的用户过滤出来。
RocketMQ支持给用户数据打tag,消费者根据tag过滤所需要的数据,消费者就可以只消费这部分数据,就剩下了消费者过滤数据的资源消耗。
在这里插入图片描述

3.2.2 支持事务

Kafka支持事务,保证发送的一批消息同时成功或者同时失败,
但是我们写业务代码的时候,希望执行一些自定义逻辑和生产者发送消息这两件事要么同时成功要么同时失败,这是RocketMQ支持的事务能力
在这里插入图片描述

3.2.3 加入延时队列

当我们希望消息被投递出去之后,消费者不是立马消费而是过一段时间再去消费,也就是所谓的延时消息,这就要用到RocketMQ的延时队列,而Kafka就需要程序员自己实现类似的功能。

3.2.4 加入死信队列

消费消息是有可能失败的,失败后一般可以设置重试,如果多次重试失败,RocketMQ会将消息放在一个专门的队列中,方便我们单独做处理,这种专门存放失败消息的队列就是死信队列,kafka不支持,需要程序员实现。
在这里插入图片描述

3.2.5 消息回溯

在这里插入图片描述

Kafka支持从某个地方开始消费,即offset,后来也支持时间(0.10.1版本后)
在这里插入图片描述

RocketMQ不仅支持调整offset,还支持调整时间


http://www.ppmy.cn/ops/158528.html

相关文章

HCIA项目实践---ACL访问控制列表相关知识和配置过程

十 ACL访问控制列表 1 策略的概念 在网络连通之后, 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上,匹配流量,执行相应的动作。(流量流入或者流出的接口并不是一个固定的概念而是一个相对的…

PMP冲刺每日一题(8)

试题1 您已经被委派为某项目的项目经理,权职范围明确界定,限于产品总装线的设计及建设阶段。客户组的一位成员向项目部门主管要求在项目安装阶段完成一项小工作。项目部门主管请客户询问项目经理。对这一请求的答复应包括∶ A、经修订的资源计划 B、经项…

javafx HTMLEditor自定义字体

javafx HTMLEditor原有的字体选择有很多,选择的时候很难定位为常用的,所以需要自定义HTMLEditor的字体选择。 可以使用lookupAll查找到字体选择的ComboBox int i 0;limitedFonts FXCollections.observableArrayList("SimSun", "SimHei…

flutter isolate到底是啥

在 Flutter 中,Isolate 是一种实现多线程编程的机制,下面从概念、工作原理、使用场景、使用示例几个方面详细介绍: 概念 在 Dart 语言(Flutter 开发使用的编程语言)里,每个 Dart 程序至少运行在一个 Isol…

什么关系型数据库和非关系型数据库

一、关系型数据库 1. 定义 关系型数据库是基于关系模型的数据库,用二维表结构来存储数据,表与表之间可以通过关系(如主键-外键关系)相互关联。 2. 特点 2.1 数据结构化 数据按照预定义的表结构进行存储,每个表有固…

字节跳动GOKU视频生成模型

字节跳动推出了 Goku,这是一种专为高质量视频生成而设计的高级 AI 模型。通过利用文本到视频和图像到视频的合成,Goku 重新定义了 AI 驱动的内容创作并突破了创意界限。 1、Goku 的工作原理 Goku 是一种基于流的视频生成模型,由 Rectified …

zyNo.23

SQL注入漏洞 1.SQL语句基础知识 一个数据库由多个表空间组成,sql注入关系到关系型数据库,常见的关系型数据库有MySQL,Postgres,SQLServer,Oracle等 以Mysql为例,输入 mysql-u用户名-p密码 即可登录到MySQL交互式命令行界面。 既然是…

常见的数据仓库有哪些?

数据仓库(Data Warehouse,简称数仓)是企业用于存储、管理和分析大量数据的重要工具,其核心目标是通过整合和处理数据,为决策提供高质量、一致性和可信度的数据支持。在构建和使用数仓时,选择合适的工具和技术至关重要。以下是常见的数仓工具及其特点的详细介绍: 1. Hiv…