RocketMQ快速入门_2. rocketmq 的应用场景、与其他mq的差异

news2024/11/19 12:32:53

0. 引言

之前我们讲解过rabbitMQ,本期我们将进入吞吐量更加强大的rocketMQ的学习。

1. 基础概念

如果你是刚接触MQ的同学,还不清楚消息队列的基础概念的,可以参考我之前这篇文章:

https://wu55555.blog.csdn.net/article/details/124678795

2. rocketMQ的应用场景

我们在之前的文章中已经引入了MQ的三种场景:异步调用、流量削峰、服务解耦

而除了这几个作用外,rocketmq支持的几大特性还可以处理以下几种业务场景:

  • 顺序消费

所谓顺序消费,就是希望触发的事件按照触发的顺序依次执行,而不要产生混乱。这里大家可能有疑惑,我们正常执行代码不就是顺序消费的吗? 为什么要单独说明,当然是因为执行的事件非常多,我们需要借助MQ缓冲大量消息的特性作为前提,然后又要保证消息是顺序消费执行的,这样才能保证我们后续的业务不会产生混乱。而这一场景就可以依赖rocketmq完成,后续我们会详细讲解实现步骤。

  • 分布式事务

熟悉mysql的同学应该清楚事务执行,但分布式事务的操作,一可以依赖一些分布式组件,如seata来实现,但某些场景下,比如还是上述说的,我们有大量事件堆积的情况下,需要MQ来缓冲,而我们有需要满足事务,这种所谓的事务是指什么呢? 就是在这条消息消费并执行完后续的处理事件之前,如果发生了报错,可以让这条消息的消费回退,下次可以再次消费,以此称为分布式事务消息,这类场景也不少见,而rocketmq独有的事务消息可以很好的帮助我们解决该问题。

  • 延迟操作

延迟操作在很多业务中都有需求,比如最常见的30分钟未支付自动关闭订单,定时重发等等,这一类的需求就需要MQ支持延迟消息的特性,而rocketmq的延迟消息虽然不如rabbitmq那样支持自定义的延迟时间,但是预设的16级延迟时间档位也足够我们应付绝大部分业务场景

  • 定时消息

定时消息实际上是延迟消息的一种变种,可以用定时任务完成,如定时推送订阅消息等,也可以借助延迟消息的特性来完成此类场景

3. rocketMQ与其他MQ的差异

3.1 主要差异

首先引入advanced-java项目中对比的几款常用MQ

image-20240308151127243

其中activeMQ实际已经很少使用,逐渐在退出研发者的视野。重点分析下rabbitMQ、rocektMQ、kafka的差异

rabbitmq相对出现的周期更长,功能性上更加完善,支持很多的拓展插件,如果你的项目对于吞吐量没有那么高的要求,只是需要个万级的MQ来做一些解耦、缓冲等,那么推荐rabbitmq。

但如果考虑后续要增加业务量,或者有不和预期的流量激增,那么更加推荐rocketmq,且因为是阿里开源的,文档性上相对更加友好,代码习惯更加符合国人习惯。但在大批量数据下可能有丢数据的风险,需要经过细致的调优。

kafka主要出现在大数据行业场景,同时像ELK之类的海量日志数据处理也会出现kafka的应用之地,同样有丢消息的诟病,优点是比rocketmq支持更加庞大的吞吐量。

3.2 架构差异

我们之前一起学习过rabbitmq,大家会了解到其中有路由的概念,相对来说rabbitmq的架构是有交换机来做一层分发的

image-20240308153604366

而在rocketmq中就没有交换机的分发了,通过topic来划分不同的队列,消费者通过订阅topic来接收消息,同时消费者、生产者都可以区分不同的群组

image-20240308155455406

相对kafka的架构就更加复杂,通过zookeeper来管理集群,采用broker服务存储消息,与rocketmq相同的是,也有主题topic的概念,消费者也通过订阅主题来接收相关的消息。不同的是kafka中有分区partition,一个topic会被切分为多个分割成多个较小的、有序的数据单元,每个数据单元就是一个partition。相对来说提高了kafka的并发能力,并且会创建分区副本存储到不同的broker上,以此提高可用性。

image-20240308155316750

4. 总结

从上文可以看到rocketmq中实际上是有namesrv , broker两个组件的,除此之外rocketmq还有一个管理端,而这三个组件之前的关系是什么,如何协同合作的? 我们将在下一节讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1500803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

凌鲨微应用开发流程

微应用开发流程 使用vite,nextjs等框架创建前端项目引入需要的api包通过调试界面进行调试 创建前端项目 vite yarn create vitenextjs yarn create next-app引入需要的api包 名称权限说明http跨域访问跨域http访问tauri提供的apilinksaas-minapp/api打开浏览器读本地文件…

每日OJ题_牛客CM24 最近公共祖先

目录 牛客CM24 最近公共祖先 解析代码 牛客CM24 最近公共祖先 最近公共祖先_牛客题霸_牛客网 解析代码 class LCA { public:int getLCA(int a, int b) {// 左孩 父 * 2 1,右孩 父 * 2 2;// 父 (孩 - 1) / 2;/…

掘根教你拿捏C++异常(try,catch,throw,栈解退,异常规范,异常的重新抛出)

在介绍异常之前,我觉得很有必要带大家了解一下运行时错误和c异常出现之前的处理运行时错误的方式。这样子能更深入的了解异常的作用和工作原理 运行阶段错误 我们知道,程序有时候会遇到运行阶段错误,导致程序无法正常运行下去 C在运行时可…

离散数学——特殊图思维导图

离散数学——特殊图思维导图 目录 前言 内容 大纲 参考 前言 这是当初学习离散数学时整理的笔记大纲,其中包含了自己对于一些知识点的体悟。现将其放在这里作为备份,也希望能够对你有所帮助。 当初记录这些笔记只是为了在复习时更快地找到对应的知…

跨境电商趋势解析:社交电商携手私域流量运营,精准触达与转化

随着全球化的深入发展,跨境电商逐渐成为全球贸易的重要组成部分。在这一背景下,社交电商作为一种新兴的商业模式,正逐渐在跨境电商领域崭露头角,并对私域流量的运营产生了深远的影响。本文Nox聚星将和大家分析社交电商在跨境电商中…

Postman中文文档——安装与更新

前言 postman好不好用,只有自己去用过了才知道,如果你之前没有使用过的,那我建议尝试去安装使用一下。 postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好 。 无论是开发人…

程序运行的基本流程

操作系统(应用程序): 装系统就是将操作系统安装到硬盘1中 计算机启动的基本过程: 总结: 程序一般保存在硬盘中,软件安装的过程就是将程序写入硬盘的过程程序在运行时会加载进入内存,然后由CPU…

浅谈碳化硅MOSFET TO-247封装单管引入开尔文管脚必要性

相较于传统的硅MOSFET和硅IGBT 产品,基于宽禁带碳化硅材料设计的碳化硅 MOSFET 具有耐压高、导通电阻低,开关损耗小的特点,可降低器件损耗、减小产品尺寸,从而提升系统效率。而在实际应用中,我们发现:带辅助…

Springboot + Vue用户管理系统

Springboot Vue用户管理系统 主要实现了管理员的登录,用户管理,用户的增删改查等操作, 技术实现,前端采用Vue 后端采用Springboot ,前后端分离系统,数据库使用mysql 还用到了redis,mybatis-plus。。。。。。。。。…

我从200条留言中,挑选出3款免费又实用的软件,且用且珍惜

在浩如烟海的软件世界中,真正免费且实用的软件如同珍珠般稀少,能够遇见它们实属不易。 1、OBS 当你在各种平台上欣赏那些清晰且色彩绚丽的短视频时,或许不会想到,它们很可能是由一款名为OBS Studio的免费开源录屏与直播软件制作…

[云原生] k8s之存储卷

一、emptyDir存储卷 当Pod被分配给节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每…

妇女节:打开AI视界,成就“她力量”

根据国内招聘平台猎聘发布的《2024女性人才数据洞察报告》,从2023年3月到2024年2月,女性在AIGC领域的求职人次同比增长了190.49%。随着人工智能时代的降临,女性正以前所未有的姿态,在技术的助力下,蜕变成为新生的力量。…

YOLOv9来了:实时目标检测新SOTA,完胜各种轻量或大型模型!

距离YOLOv8发布仅1年的时间,v9诞生了! 这个新版本主打用“可编程梯度信息来学习你想学的任何内容”。 无论是轻量级还是大型模型,它都完胜,一举成为目标检测领域新SOTA: 网友的心情be like: 鉴于源码已经发布&#xf…

【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用

目录 一、Linux编译器-gcc/g1.1 gcc/g 使用方法1.2 程序的翻译过程1.3 链接 -- 动静态链接特点及区别 二、Linux调试器-gdb2.1 背景2.2 使用方法 三、Linux项目自动化构建工具-make/Makefile3.1 背景3.2 原理3.3 项目清理 一、Linux编译器-gcc/g 1.1 gcc/g 使用方法 格式&…

JuiceSSH结合Cpolar实现公网远程SSH访问内网Linux系统

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …

安全防御第七次实验

需求:在FW7和FW8之间建立一条IPSEC通道保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 一、NAT配置 FW4: FW6: 二、在FW4上做服务器映射 三、配置IPSEC FW5: FW6: 四、防火墙上的安全策略 FW4: FW5:…

Chrome安装Axure插件

打开原型目录/resources/chrome,重命名axure-chrome-extension.crx,修改后缀为rar,axure-chrome-extension.rar 解压到axure-chrome-extension目录打开Chrome,更多工具->扩展程序,打开开发者模式,选择加…

电机控制系列模块解析(第八篇)—— 高频注入法

一、基本原理 在电机控制领域,高频方波注入法常用于估计转子的位置和转速。其工作原理是每隔一定的时间间隔在电机输出电压上叠加一个电压脉冲。然后,在两相静止坐标系下或者同步旋转坐标系下对采样时刻的电压和电流进行相应的计算,以实现对…

专业设计者必备!2024年精选作品集模板,一键替换高品质样机,展现出色!

现在是金三银四求职季。你已经开始制作或更新作品集了吗?作品集是展示设计师设计才能、创新思维和项目经验的重要媒介。随着设计师经验的积累和技能的进步,一个高质量的作品集将不断更新升级。在这里,即时设计为您提供了100多种作品集模板资源…

Transformer中的 Add Norm

Transformer中的 Add & Norm flyfish Add 同一个意思 Residual connections,Skip Connections Norm 包括Post layer normalization和Pre layer normalization Post layer normalization:Transformer 论文中使用的方式,将 Layer norm…