RocketMQ(消息中间件)

目录

一、为什么会出现消息中间件?

二、消息中间件是干嘛的?

三、应用解耦

四、流量削峰

五、异步处理

1.串行方式:

2.并行方式:

3.引入消息队列:

 六、RocketMQ的架构及概念


一、为什么会出现消息中间件?

Http请求默认采用同步请求方式,基于请求与响应模式,在客户端与服务器进行通讯 时,客户端调用服务端接口后,必须等待服务端完成处理后返回结果给客户端才能继续执行,这种情况 属于同步调用方式。如果服务器端发生网络延迟、不可达的情况,可能客户端也会受到影响,为了解决这个问题,消息中间件就产生了。


二、消息中间件是干嘛的?

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统 的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)例如:寄快递

 


三、应用解耦

如果系统的耦合性越高,容错性就越低,以电商应用为例,用户创建订单后, 如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障 或者因为升级等原因暂时不可用,都会造成下单操作异常!

使用消息队列解耦,系统的耦合性就会下降了,比如物流系统发生故障, 需要几分钟才能修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统恢复后,补充处理存在 消息队列中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障。

举例说明:

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户下单成功

库存系统:订单下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行
                        库存操作

假如:在下单时库存系统不能正常使用,也不影响正常下单,因为下单后,订单系统写入消息

    队列就不再关心其他的后续操作了。实现了订单系统与库存系统的应用解耦。


四、流量削峰

应用系统如果遇到系统请求流量的瞬间猛增,有可能将系统压垮,有了消 息队列可以将大量请求缓存起来,分散到很长一段时间处理,这样可以大大提高系统的稳定性

 举例说明:

秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为了解决这个问题,一般需要 在应用前端加入消息队列。


五、异步处理

用户注册后,需要发注册邮件和注册短信 传统的做法有两种

1.串行方式:

将注册信息写入数据库成功后,发送注册邮件,再发送注册短信,以上三个任务全部完成 后,返回给客户端

2.并行方式:

将注册信息写入数据库成功后,发送注册邮件的同时发送注册短信,以上三个任务完成 后,返回给客户端;与串行的差别是并行的方式可以提高处理的时间

3.引入消息队列:


 六、RocketMQ的架构及概念

Broker(邮递员) :Broker是RocketMQ的核心,负责消息的接收,存储,投递等功能

NameServer(邮局) :消息队列的协调者,Broker向它注册路由信息,同时Producer和Consumer向其获取路由信息

Producer(寄件人) :消息的生产者,需要从NameServer获取Broker信息,然后与Broker建立连接,向Broker发送消息

Consumer(收件人) :消息的消费者,需要从NameServer获取Broker信息,然后与Broker建立连接,从Broker获取消息

Topic(地区) :用来区分不同类型的消息,发送和接收消息前都需要先创建Topic,针对Topic来发送和接收 消息

Message Queue(邮件) :为了提高性能和吞吐量,引入了Message Queue,一个Topic可以设置一个或多个Message Queue,这样消息就可以并行往各个Message Queue发送消息,消费者也可以并行的从多个 Message Queue读取消息

Message: Message 是消息的载体。

 

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

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

相关文章

k8s基于rbac权限管理serviceAccount授权管理

测试通过http访问apiServer curl没有证书不能通过https来访问apiServer需要使用kubectl代理 #使用kubectl代理 kubectl proxy --port8111& #curl访问 api/v1 是资源所属群组/版本 即创建资源时定义的apiVersion #后边跟的是要访问的资源 #查看所有命名空间 #查看核心资源用…

小程序快速备案助手代备案小程序开发

小程序快速备案助手代备案小程序开发 用户注册与登录:用户可以通过手机号或其他方式进行注册和登录,以便进行备案相关操作。备案信息填写:用户可以填写小程序的备案信息,包括小程序名称、小程序服务类目、域名等。备案材料上传&a…

Python钢筋混凝土结构计算.pdf-混凝土构件计算

计算原理: 代码实现: #钢筋混凝土参数 def c_hrb(): global fcuk,HRB,Ec,fc,ft,ftk,Es,fy,fyp,fyk global a1,epsilon_cu fcukEcfcftftk0.0 HRBEsfyfypfyk0.0 #矩形应力图系数a1,C50以下为1.0 a11.0 #正截面混凝土极限压应变epsilon_cu&#…

linux URL访问工具

URL访问工具 有时候想在命令行下通过http访问接口/网页,可以使用curl来进行操作 发起请求 curl www.baidu.com 会返回网页内容 参数选项 -i参数 使用-i参数,会返回响应header curl -i www.baidu.com -I参数 使用-I参数,只会返回响应header cu…

使用element-ui中的el-table回显已选中数据时toggleRowSelection报错

最近在写一个后台&#xff0c;需要在表格中多选&#xff0c;然后点击编辑按钮的时候&#xff0c;需要回显已经选中的表单项 <el-table v-loading"loading" :data"discountList" :row-key"(row) > row.id" refmultipleTable selection-cha…

LeetCode 面试题 02.05. 链表求和

文章目录 一、题目二、C# 题解 一、题目 给定两个用链表表示的整数&#xff0c;每个节点包含一个数位。 这些数位是反向存放的&#xff0c;也就是个位排在链表首部。 编写函数对这两个整数求和&#xff0c;并用链表形式返回结果。 点击此处跳转题目。 示例&#xff1a; 输入&a…

Python---列表list

列表特点&#xff1a; 1.有序的元素 2.可重复 3.可以修改 4.可以存储不同类型元素 5.可以存储多个元素 列表语法&#xff1a; 字面量: [元素1,元素2,元素3...]定义变量: 变量 [元素1,元素2,元素3...]定义空列表: 变量 [] 变量 list()嵌套列表 变量 [[元素1,元素2,元素3.…

Spring Security无法调用接口错误解决

之前在写程序的时候&#xff0c;发现有个接口使用postmapping发送请求一直无法进行调用 PostMapping("/user/login")public ResponseResult login(User user){//登录&#xff0c;这里登录的时候需要传入用户名和密码System.out.println("user "user.toSt…

Wireshark流量分析例题

1.题目要求&#xff1a; 1.黑客攻击的第一个受害主机的网卡IP地址 2.黑客对URL的哪一个参数实施了SQL注入 3.第一个受害主机网站数据库的表前缀&#xff08;加上下划线例如abc&#xff09; 4.第一个受害主机网站数据库的名字 看到题目SQL注入&#xff0c;那就首先过滤http…

264_BOOST中的Json库解析_BOOST_AUTO(itrpromodel, doc.FindMember(“productmodel“));

BOOST_AUTO(itrpromodel, doc.FindMember("productmodel"));if(itrpromodel != doc.MemberEnd()){BOOST_AUTO(iterd_url

智能化新十年,“全栈智能”定义行业“Copilot智能助手”

“智能化转型是未来十年中国企业穿越经济周期的利器”&#xff0c;这是联想集团执行副总裁兼中国区总裁刘军在去年联想创新科技大会上做出的判断&#xff0c;而2023年正值第四次工业革命第二个十年的开端&#xff0c;智能化是第四次工业革命的主题。2023年初&#xff0c;基于谷…

Vue: 编程式导航的跳转 和 传参

文章目录 编程式导航-基本跳转两种语法&#xff1a;path路径跳转name命令路由跳转 编程式导航-路由传参① 使用path路径跳转传参&#xff08;query传参 或者 动态路由传参&#xff09;②使用name命名路由跳转传参&#xff08;query传参 或者 动态 编程式导航-基本跳转 点击跳转…

后端面试话术集锦第 十七 篇:MySQL面试话术

这是后端面试集锦第十七篇博文——MySQL面试话术❗❗❗ 1. 解释一下单列索引和联合索引 单列索引是指在表的某一列上创建索引。 联合索引是在多个列上联合创建索引。 单列索引可以出现在where条件的任何位置,而联合索引需要按照一定的顺序来写。在多条件查询的时候,联合索引…

垃圾回收 - 引用计数法

GC原本是一种“释放怎么都无法被引用的对象的机制”。那么人们自然而然就会想到&#xff0c;可以让所有对象事先记录下“有多少程序引用了自己”。让各对象知道自己的“人气指数”&#xff0c;从而让没有人气的对象自己消失&#xff0c;这就是引用计数法。 1、计数器 计数器表…

目标检测YOLO实战应用案例100讲-基于RFID与目标检测的种鹅个体产蛋信息监测系统研究(续)

目录 3.4.3 结果分析 基于ROI的目标计数与产蛋信息获取 4.1 引言 4.2 ROI区域划定

【题解】JZOJ6645 / 洛谷P4090 [USACO17DEC] Greedy Gift Takers P

洛谷 P4090 [USACO17DEC] Greedy Gift Takers P 题意 n n n 头牛排成一列&#xff0c;队头的奶牛 i i i 拿一个礼物并插到从后往前数 c i c_i ci​ 头牛的前面&#xff0c;重复无限次&#xff0c;问多少奶牛没有礼物。 题解 发现若一头牛无法获得礼物&#xff0c;那么它后…

personalized image enhancement 调研

Personalized Image Enhancement Using Neural Spline Color Transforms 这是TIP期刊 2020年的一篇论文&#xff0c;首先提出了一个能预测曲线的网络&#xff0c;预测一些锚点&#xff0c;根据锚点插值出连续的曲线&#xff0c;然后用曲线对raw image进行retouching。然后提出了…

【强化学习】MDP马尔科夫链

基本元素 状态集&#xff1a;表示智能体所处所有状态的全部可能性的集合。类似的集合&#xff0c;行为集&#xff0c;回报集决策&#xff1a;规定我在某个状态下&#xff0c;我做出某个action马尔可夫链&#xff1a;学术上来说是无记忆性质。说白了就是我只在乎我目前的状态。…

Ansible学习笔记9

yum_repository模块&#xff1a; yum_repository模块用于配置yum仓库的。 测试下&#xff1a; [rootlocalhost ~]# ansible group1 -m yum_repository -a "namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno" 192.168.17.106 | CHANGED &g…

加快 MySQL 数据迁移

目录 一、先导 1. 自建目标实例 2. 配置目标主从 二、源导出 1. 生成查询用户权限的SQL语句 2. 生成权限的SQL语句 3. 生成创建非主键索引的SQL语句 4. 导出源库结构 5. 导出源库数据 三、目标导入 1. 目标实例设置 2. 创建用户与权限 3. 处理结构导出文件 4. 导…