Rocketmq常用使用场景

news2024/11/18 0:27:27

RocketMQ 是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ 的特点是纯JAVA实现

  1. 基础概念
    Producer: 消息生产者,负责产生消息,一般由业务系统负责产生消息
    Producer Group: 消息生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者
    Consumer: 消息消费者,负责消费消息,一般是后台系统负责异步消费
    Consumer Group: 消费者组,和生产者类似,消费同一类消息的多个 Consumer 实例组成一个消费者组
    Topic: 主题,用于将消息按主题做划分,Producer将消息发往指定的Topic,Consumer订阅该Topic就可以收到这条消息
    Message: 消息,每个message必须指定一个topic,Message 还有一个可选的 Tag 设置,以便消费端可以基于 Tag 进行过滤消息
    Tag: 标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
    Queue: Topic和Queue是1对多的关系,一个Topic下可以包含多个Queue,主要用于负载均衡,Queue数量设置建议不要比消费者数少。发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个Queue上。Consumer订阅消息时,会根据负载均衡策略决定订阅哪些Queue的消息
    Dead-Letter Message: 死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列RocketMQ会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明Consumer在正常情况下无法正确地消费该消息。此时,消息队列RocketMQ不会立刻将消息丢弃,而是将这条消息发送到该Consumer对应的特殊队列中。
    Offset: RocketMQ在存储消息时会为每个Topic下的每个Queue生成一个消息的索引文件,每个Queue都对应一个Offset记录当前Queue中消息条数
    NameServer: NameServer可以看作是RocketMQ的注册中心,它管理两部分数据:集群的Topic-Queue的路由配置;Broker的实时配置信息。其它模块通过Nameserv提供的接口获取最新的Topic配置和路由信息;各 NameServer 之间不会互相通信, 各 NameServer 都有完整的路由信息,即无状态。
    Broker: Broker是RocketMQ的核心模块,负责接收并存储消息,同时提供Push/Pull接口来将消息发送给Consumer。Broker同时提供消息查询的功能,可以通过MessageID和MessageKey来查询消息。Borker会将自己的Topic配置信息实时同步到NameServer
  2. 基础架构
    在这里插入图片描述

3为什么使用消息队列
常用场景有 4 个:异步解耦、削峰填谷,分布式事务一致性,大数据分析。
3.1 异步解耦
例如:交易系统作为淘宝和天猫主站最核心的系统,每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、流计算分析等等,整体业务系统庞大而且复杂,消息队列RocketMQ可实现异步通信和应用解耦,确保主站业务的连续性。
3.2 削峰填谷
例如:每天 0:00 到 12:00,A 系统风平浪静,每秒并发请求数量就 50 个。结果每次一到 12:00 ~ 13:00 ,每秒并发请求数量突然会暴增到 5k+ 条。但是系统是直接基于 MySQL 的,大量的请求涌入 MySQL,每秒钟对 MySQL 执行约 5k 条 SQL。
一般的 MySQL,扛到每秒 2k 个请求就差不多了,如果每秒请求到 5k 的话,可能就直接把 MySQL 给打死了,导致系统崩溃,用户也就没法再使用系统了。但是高峰期一过,到了下午的时候,就成了低峰期,可能也就 1w 的用户同时在网站上操作,每秒中的请求数量可能也就 50 个请求,对整个系统几乎没有任何的压力。如果使用 MQ,每秒 5k 个请求写入 MQ,A 系统每秒钟最多处理 2k 个请求,因为 MySQL 每秒钟最多处理 2k 个。A 系统从 MQ 中慢慢拉取请求,每秒钟就拉取 2k 个请求,不要超过自己每秒能处理的最大请求数量就 ok,这样下来,哪怕是高峰期的时候,A 系统也绝对不会挂掉。
3.3 分布式事务一致性
交易系统、支付红包等场景需要确保数据的最终一致性,大量引入消息队列RocketMQ的分布式事务,既可以实现系统之间的解耦,又可以保证最终的数据一致性。
3.4 大数据分析
数据在“流动”中产生价值,传统数据分析大多是基于批量计算模型,而无法做到实时的数据分析,利用阿里云消息队列RocketMQ与流式计算引擎相结合,可以很方便的实现业务数据的实时分析。
消息队列缺点:
(1)可用性降低
(2)系统复杂度提高
(3)一致性问题

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

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

相关文章

ESP32CAM---利用Vscode阅读源码

前言 (1)首先,我在此吐槽一些,arduino平台的代码阅读功能,是真滴垃圾。气死我了。配置这玩意搞了半天,还没搞好。 (2)最后我决定使用Vscode阅读arduino的代码。arduino IDE负责编译程…

智能工厂已成为制造业数字化转型的重心

我国“十四五”规划纲要提出,要深入实施智能制造和绿色制造工程,发展服务型制造新模式,推动制造业高端化智能化绿色化。随着5G等新一代信息技术与制造业不断深度融合,制造业的智能化发展成为未来我国制造业转型升级的重要方向。《…

MyBatisPlus快速入门(一)MyBatisPlus简介、历史和优势

一、什么是 MyBatisPlus?二、MyBatisPlus 相关文档2.1 官网2.2 Github源码2.3 官方文档 三、MyBatisPlus 的历史四、MyBatisPlus 的特性和优势4.1 特性4.2 优势 五、如何学习 MyBatisPlus & 专栏计划 一、什么是 MyBatisPlus? MyBatisPlus&#xff…

MyBatis中使用第三方分页插件PageHelper完成分页功能

文章目录 一、前言二、基于插件拦截方式1、自定义插件2、使用第三方插件完成分页1、分页插件的配置2、分页插件的使用 一、前言 分页是web应用程序非常重要的一个技术。数据库中的数据可能是成千上万的,不可能把这么多的数据一次显示在浏览器上面。一般根据每行数据…

2023年4月CSDN客服月报|解决3个重大问题和26个次要问题,采纳1个用户建议

听用户心声,解用户之需。hello,大家好,这里是《CSDN客诉报告》第19期,接下来就请大家一同回顾我们4月份解决的bug~ 一、重大问题 1、【猿如意】ChitGPT近期老是提示“我回答不过来”的问题 反馈量:10 2、…

【星戈瑞】Sulfo-Cyanine7 maleimide磺化CY7标记马来酰亚胺

水溶性Cyanine7 mal是一种常用的细胞标记物,可以被用于细胞荧光成像等应用中。它的分子结构中含有Cyanine7和mal两部分,其中Cyanine7是一种红外荧光染料,可以发出红外光,而mal则是一种水溶性的化合物,可以使Cyanine7分…

响应式与自适应的区别

响应式与自适应的区别: 响应式:一套适配多端适配不同的屏幕设备,即不同的视口分辨率 自适应:多套页面不同视口分辨率大小显示同样的网页rem、百分比等相对单位 注意: 在开发中,项目的响应式,一些…

Java技术接单

今天给大家介绍一个阶段性(周期性)能获取一定收益的Java技术接单群,分享给大家!主要对搞Java的粉丝有帮助,因为可以赚点小钱,对Java技术的要求不高! 那些感兴趣或者想直接加技术群的我给大家讲一…

JAVA8 Stream

1 Steam流式思想概述 Stream和IO流(InputStream/OutputStream)没有任何关系,请暂时忘记对传统IO流的固有印象! Stream流式思想类似于工厂车间的“生产流水线”,Stream流不是一种数据结构,不保存数据,而是对数据进行加…

Vue 3 第二十一章:组件九(组件高级特性-组件的混入和继承)

文章目录 1. 组件的混入2. 组件的继承总结 Vue 中的组件混入和继承功能允许我们在多个组件之间共享代码,从而提高代码的可重用性和可维护性。 1. 组件的混入 混入是一种将多个对象合并为一个对象的技术。在 Vue 3 中,我们可以使用 mixins 属性来定义混…

ThingsBoard的Actor模型

0、概述 下面是我从网上查阅资料总结下来的. 1、背景 多线程编程是每个程序员的基本功,同时也是开发中的难点,处理各种“锁”的问题是让人十分头痛的一件事。例如,设计一个转账功能,怎么保证在多线程下能正常运行?你可能会说,这个简单,在进行转账操作前,先对两个账户…

【实战项目】使用C语言和easyX,一起完成数字拼图游戏吧!快来挑战一下吧~

这款简易的拼图游戏包含了15个数字方块,你需要将它们按照顺序排列成1~15的数字,就能完成游戏。 在游戏中会记录你完成拼图所用的时间。我想强调的是,一个精彩的游戏并不一定需要使用图片。只要功能和手感都做得出色,游戏同样能够…

从0到1,深刻理解Linux权限

[Linux]深刻理解Linux权限 从0到1,深刻理解Linux权限Linux权限的概念Linux权限管理Linux文件访问者文件类型和访问权限文件类型访问权限 文件访问权限设置修改文件权限修改文件拥有者修改所属组 umask掩码目录权限目录权限问题粘滞位 权限总结: 从0到1&a…

1688商品详细信息价格SKU接口

随着新零售时代的到来,越来越多的企业开始关注电商平台,其中1688平台作为国内重要的B2B电商平台之一,对于企业发展、产品销售等方面有着重要的价值。在使用1688平台出售商品时,如何优化商品详情页、提高搜索排名、增加商品曝光度&…

PG15.3.0源码编译安装日志插件pgbadger(上)

一、开启相关日志 修改后alter一定要重启,才会修改 pg_ctl restart -D /usr/local/pgsql/data -l logfile按照下面的方法一个个修改。 log_destination csvlog # 可选 logging_collector on log_min_duration_statement 0 log_line_prefix %t [%p]: us…

(转载)MATLAB智能算法30个案例分析(2)——基于遗传算法和非线性规划的函数寻优算法

以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。 1 理论基础 1.1 非线性规划 非线性规划是20世纪50年代形成的一门新兴学科。1951年库恩和塔克发表的关于最优性条件(后来称为库恩塔克条件)的论文是非线性规划诞生的标志。非线性规划研究…

聚会游戏玩什么?UMO轻松炒热气氛

UMO是一款有趣的多人益智桌游,考验玩家耐力和技巧的比拼!玩家将在游戏中通过特定的规则来出牌,谁先出完所有牌谁就赢,游戏非常讲究策略和运气哦~ 当玩家手上只剩一张牌时,必须喊出UMO!游戏因此得名。【数字…

自学网络安全,最应该先学的五大技能树是什么?(附学习路线图)

前言: 近几年网络安全事件频发,国家对于互联网信息安全和互联网舆情的重视程度不断提升有关,全球网络安全岗位缺口达500万,中国约100万,产业人才需求逐年增加,网络安全行业的相关岗位成为炙手可热的职业。…

COMSOL光电案列应用实操教学:

COMSOL多物理场仿真软件以高效的计算性能和杰出的多场耦合分析能力实现了精确的数值仿真,已被广泛应用于各个领域的科学研究以及工程计算,为工程界和科学界解决了复杂的多物理场建模问题。光电作为物理类专业课程中极为重要的一部分,其教学内…

如何做到设备维护事半功倍?

在工业生产过程中,设备故障可能导致生产停机、成本增加和安全风险。因此,及时监测设备的健康状况,预测潜在故障,并采取相应的维护措施至关重要。 振动在线监测系统是一种有效的工具,可以实时监测设备振动,并…