
为什么使用消息队列
发布日期:2021-05-08 11:28:00
浏览次数:12
分类:精选文章
本文共 694 字,大约阅读时间需要 2 分钟。
使用消息队列主要保证以下场景:
- 解耦
- 异步
- 削峰
解耦
假设 B、C、D 三个系统都依赖 A 系统某个数据,A 系统就需要考虑通过某种方式将这部分数据传递过去。传递的过程中还需要考虑数据丢失怎么办,下游系统挂掉怎么办等等问题,而实际上这部分功能实际不属于 A 系统本身的业务
在这种情况下,使用消息队列,A 系统只需将数据放到消息队列中,谁需要自己去申请消费即可,数据消费,新增依赖,取消依赖在下游系统自己处理,至于消息的安全性和稳定性交给消息队列即可
异步
假设 A 系统的某个功能还需要 B、C、D 三个子系统配合完成,具体过程为:
用户请求A系统接口 -> A系统处理 -> B、C、D系统处理 -> 结果返回
此时,用户需要等待 A 系统处理的时长 + B、C、D 系统处理的时长。使用消息队列,A 系统处理完毕后。发送 MQ,B、C、D 分别从 MQ 消费。此时用户就无需等候 B、C、D 系统处理,直接返回即可。
削峰
削峰是高并发场景下常常提到的概念,简单来说就是并发量很大时,削弱一部分。
举个例子:餐饮系统,每天只有饭点并发量大,平时系统稳定运行,到了饭点并发量一下涌进来,系统直接宕机。此时就可以考虑使用消息队列,将请求先保存起来,按照处理的速度,一点一点消费。
注意项
无论什么系统,引入的外部组件越多,越容易挂掉。消息队列包含以下缺点:
- 降低系统可用性:消息队列不稳定时,系统更容易挂掉
- 提高系统复杂度:多了一个组件,还需要考虑组件可能产生的问题,系统更复杂
- 如何解决一致性问题:假如某个消息需要所有订阅者都处理成功才算成功,一部分处理成功,一部分处理失败,怎么办
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月13日 10时28分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
文件加密软件对于企业发展而言有何优势?局域网数据防泄密工作应该如何入手?
2021-05-08
Beautiful Soup基础入门
2021-05-08
求∑(k=1~100)k+∑(k=1~50)k2+∑(k=1~10)
2021-05-08
用选择法对10个整数进行排序
2021-05-08
day 001 Linux命令简介
2021-05-08
点击控制盒子移动
2021-05-08
快速排序
2021-05-08
ajax封装
2021-05-08
js求阶乘
2021-05-08
小程序图片正确使用方式(防止发布之后不显示)
2021-05-08
点击密码input框禁止浏览器弹出已经记录的账号密码
2021-05-08