ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ 入门

2021-11-17 11:02:08  阅读:112  来源: 互联网

标签:调用 入门 处理 系统 RabbitMQ api MQ 下单


一、什么是 MQ

MQ(message queue),从字面意思上看,本质上是一个队列,遵循先进先出(FIFO),只不过队列中存放的是 message 而已,是一种跨进程的通信机制,用于上下游传递消息,在互联网架构中,MQ 是一种非常常见的上下游 逻辑解耦 + 物理解耦 的消息通信服务,使用了 MQ 之后上游发送消息只需要依赖 MQ,不再需要依赖下游服务了

 

二、MQ 的作用

1、流量削峰

假设一个订单系统一秒最多只能处理 10000 个下订单请求,这个处理能力在应付正常时段的下单是绰绰有余的,在正常下单的情况下,我们一秒钟之后就能返回下单成功的结果给用户,但是在高峰期,用户下单的数量猛增到 80000,这个时候我们下单系统的服务器是无法处理这么多的请求的,只能在下单超过 10000 之后限制用户下单,这样给用户的体验就很不友好,如果使用了 MQ 做缓冲,我们就可以取消这个下单的限制,把一秒内下的订单先缓冲在 MQ 中,然后再先分散成一段时间来处理,虽然这个时候有些用户可能在下单十几秒之后才能收到下单成功的结果,但是总比不能下单的体验要好

 

2、应用解耦

假设一个电商系统的应用中有订单系统、库存系统、物流系统、支付系统,用户下单完成之后需要调用库存系统、物流系统、支付系统,如果这个时候有任何一个系统发生了故障,都会造成整个下单操作异常,当我们使用了 MQ 之后,系统之间的调用故障就会减少很多,比如物流系统发生了故障,需要几分钟的时间来修复,在这几分钟的时间里,物流系统要处理的订单任务就被缓存在消息队列中,当物流系统恢复故障后,就可以从 MQ 中取出订单任务进行处理,下单的用户是感知不到物流系统的故障的,这样就可以提升系统的可用性

 

3、异步处理

有些服务调用是异步的,例如 A 调用 B,B 需要花很长的时间去执行,但是 A 需要知道 B 什么时候可以执行完,以前一般有两种方式,A 过一段时间去调用 B 的查询 api 去查询 B 是否已经执行完成,或者 A 提供一个回调的 api,当 B 执行完了任务之后就调用 A 的回调 api 通知 A 服务,这两种方式都不是很优雅,使用 MQ 就可以很方便的解决这个问题,A 调用 B 服务后只需要监听 B 处理完成的消息,当 B 处理完成之后,会发送一条消息给 MQ ,MQ 会将此消息转发给 A 服务,这样一来 A 就不用循环调用 B 的查询 api,也不用提供回调 api,同样 B 服务也不需要执行这些操作,A 服务还能及时的得到异步处理成功的消息

 

标签:调用,入门,处理,系统,RabbitMQ,api,MQ,下单
来源: https://www.cnblogs.com/xiaomaomao/p/15517020.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有