前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ消息中间件学习1:基本概念与简单实战模式讲解

RabbitMQ消息中间件学习1:基本概念与简单实战模式讲解

作者头像
程序员洲洲
发布2024-06-07 08:59:10
1120
发布2024-06-07 08:59:10
举报
文章被收录于专栏:项目文章

MQ概念

Message Queue(消息队列),在消息的传输过程中保存消息的容器,多用于分布式系统之间进行通信。

就是两个子系统之间进行通信,有两种选择,第一种是直接远程调用,第二种是借助第三方完成通信。

发送方称为生产者,接收方称为接受者。

MQ的优势

1、应用解耦 应用解耦的意思:设计系统追求高内聚低耦合的目的,那么分布式也是这样的,就是降低系统和系统之间的耦合性。 实战分析:订单系统通过远程调用子系统完成业务。

也就是说订单系统会和库存系统、支付系统、物流系统是耦合的,如果库存系统挂了,那么订单系统就会挂。那么就称这个系统的容错性比较低;还有如果加一个x系统,那么程序员只能修改订单系统,这样就会很难受,不停修改订单系统,可维护性降低了。

那么如何通过MQ来解决呢。

用户下单,订单系统发送一个信息给MQ,然后订单系统就会返回一个下单成功的信息给用户。然后MQ给子系统发消息。这个时候即使库存系统出错了,可能出错了一小会,然后好了,然后再从MQ中拿就好了。 如果要加X系统,那么这个时候X只需要从MQ中拿就可以了,跟订单系统没有关系的。程序员不需要从订单系统中加什么代码。

  • 增加了可维护性与解耦性。

2、异步提速

订单系统保存自己的数据库20ms,这个300ms是同步的过程,订单系统先调用库存系统300ms,然后支付系统300ms,然后物流系统300ms,然后再返回给订单系统。这个时候需要损耗的时间:

一般是200ms内得到相应才可以提升用户体验。

这个只需要25ms,提升了用户体验,不需要管是否成功。 1s中的吞吐量提升了。

3、削峰填谷

当进行一个秒杀的话,那么A系统就宕机了,用户体验太差了。 现在可以用MQ来消除这个峰值,这个时候用户发送请求给MQ就行。请求都是对接到MQ,MQ专门做这种事的,然后A系统再慢慢的拉1000个请求来处理,这个时候A系统就可以稳定很多了。

MQ的劣势

只有明确了缺点,才能更好的规避,更好的进行服务。

1、系统可用性降低 A、B子系统之间加一个MQ,可用性降低了。 这个时候还要保证MQ没有问题。 也就是说引入了外部依赖,系统的稳定性变差了,一旦MQ宕机,就会对于业务造成影响,这个时候就要保证高可用了。

2、系统复杂度提高 以前系统是同步的远程调用,现在是进行MQ异步调用。 如何保证消息没有被重复消费?怎么处理消息丢失情况?如何保证消息传递的顺序性?

3、一致性问题 A处理完业务,通过MQ给BCD发送消息,BC成功,D失败,那么如何保证消息处理的一致性呢?

上述几个问题会经常在面试中问到。所以需要好好考虑。

使用MQ需要的条件

常见的MQ用品

RabbitMQ专门适合高并发的场景。

RabbitMQ简介

基于AMQP协议,Adavanced Message Queuing Protocol 高级消息队列协议。是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端等限制。类比HTTP。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MQ概念
  • MQ的优势
  • MQ的劣势
  • 使用MQ需要的条件
  • 常见的MQ用品
  • RabbitMQ简介
相关产品与服务
消息队列 CMQ
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档