IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MQ的优点及使用场景 -> 正文阅读

[Java知识库]MQ的优点及使用场景

消息队列是分布式系统中的重要组件,通常用来处理各种复杂的业务。引入MQ会对系统有以下好处:解耦、异步、削峰。

一.解耦

分布式系统中系统间调用错综复杂,且经常会因为需求的变化增加新服务的调用。下图以支付系统为例,用户在完成支付功能后,需要调用商品系统B扣除库存,调用购物车系统清空购物车,调用订单系统修改订单状态。此时,如需要实现支付后增加用户积分功能,需要新增用户系统E的调用,这必然需要修改支付系统A的代码。每次增加新系统后,都需要重新修改支付系统A的代码,这样会增加系统的维护成本。

而使用MQ后,系统A也不用去思考应该将消息发给谁,也不需要考虑是否调用成功和失败,直接将支付结果发送至队列,各个系统订阅该队列,需要什么数据自己去MQ中消费就行了。就算新增系统,也是直接从队列中获取数据,与系统A无关。

?二.异步

MQ的第二个优点是能将部分复杂业务的调用进行异步化。还是以支付系统为例,下图中,用户发起了一个请求,支付系统A可能花费了100ms,之后在分别调用商品、购物车、订单、用户等系统完成一系列的业务操作,总共花费450ms。这个时间花费消耗虽然用户可以接受,但如果业务更为复杂,每个系统调用需要执行多个SQL语句,可能时间花费会增加,并且还未考虑到系统调用之间的网络开销时间。假如用户发起一个支付请求后,需等待2-3秒的时间,用户体验会很不好。

在使用MQ后,可以很好的解决上述问题。当用户发起支付请求后,支付系统在将支付结果发送给MQ后,直接响应用户。后续业务操作由各系统从MQ中获取相应数据后,在后台进行。无论支付成功后的业务逻辑有多复杂,用户都无法察觉,用户完成请求的时间也仅需要100ms。日常中,例如买电影票或者进行一些预约,在完成支付后马上就会提示支付成功,此时支付后的一些操作尚未完成,但过一小会时间会收到一条购买成功或者预约成功的短信通知,此时所有业务操作都已完成。这可能就是利用了MQ的异步化特性来实现的。

三.削峰

MQ的第三大特性是削峰。所谓削峰,通俗的讲就是在某个时刻,系统的QPS突然激增,可能会导致系统无法承受而奔溃。也许会想到增加服务器节点来提升系统的性能,但是系统可能平时的访问量就几百QPS,仅为了某些特定时刻而增加资源并不划算。例如下图电商系统的秒杀活动,活动开始时,可能瞬间会有数万个并发请求涌入系统,就算是数据库集群也未必能抗住。日常生活中,我们在秒杀,抢课,抢票等活动中,也经常遇到过系统卡顿,甚至直接不可用的情况。

而使用MQ后,可以将所有请求堆积在MQ中,有效的保护下游系统,并可控制好速率,供系统消费。等高峰期过了之后,系统可以继续消费,直至将所有堆积的请求消费完为止。

以上就是MQ的三大优点,之后将会进一步的学习MQ并做更多的经验总结~

?

?

?

?

?

?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 12:54:30  更:2021-12-03 12:56:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:58:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码