MQ消息队列的作用与应用

1、MQ 的作用

解耦: 避免系统服务直接调用
削峰:流量峰值来临,直接调用系统,系统容易崩溃。使用MQ能减缓冲击。
异步:同步调用链路中的耗时长,使用MQ异步返回,快速返回。

https://www.zhihu.com/question/48225860
https://www.cnblogs.com/jack1995/p/10908789.html

缺点有以下几个:

系统可用性降低
系统引入的外部依赖越多,越容易挂掉。本来你就是 A 系统调用 BCD 三个系统的接口就好了,人 ABCD 四个系统好好的,没啥问题,你偏加个 MQ 进来,万一 MQ 挂了咋整,MQ 一挂,整套系统崩溃的,你不就完了?如何保证消息队列的高可用
系统复杂度提高
硬生生加个 MQ 进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?
一致性问题
A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是 BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,咋整?你这数据就不一致了。

https://www.sohu.com/a/289890927_120045139

2、MQ的内容

api 发送和接收
MQ的高可用性
MQ的集群与容错配置
MQ持久化
事务、签收机制
延迟发送、定时投递
spring整合

2.1 MQ的高可用:

一般是搭建集群,并采用镜像或复制集的备份方式保证高可用

https://www.cnblogs.com/jack1995/p/10908797.html

2.2 MQ的可靠性:

 MQ可能出现的问题:消息重复消费,消息丢失,消息顺序等
 一般的解决办法:使用持久化,开启事务,设置消息确认方式等

MQ的重复消费问题:
https://www.cnblogs.com/jack1995/p/10908805.html
MQ 消息不丢失:
https://www.cnblogs.com/jack1995/p/10908809.html
https://www.jianshu.com/p/4491cba335d1

https://www.cnblogs.com/jack1995/category/1469110.html
https://www.cnblogs.com/linjiqin/p/12683076.html
https://www.cnblogs.com/yulove/p/13121636.htmlhttp://www.manongjc.com/detail/17-rloleghcqaiaqfu.html

posted @ 2021-04-13 10:41  zhanglw  阅读(468)  评论(0)    收藏  举报