没有合适的资源?快使用搜索试试~ 我知道了~
看B站视频项目总结的系列文档,仅供个人学习使用
资源详情
资源评论
资源推荐
1、快速入门
1.1、前言
MQ 理解
MQ = Message Queue = 消息队列 = 消息中间件
我们将其分为两个词理解:
1、消息理解
微信、短信、语言、漂流瓶.....
是消息就一定有一个 发送者 和一个 接收者
2、中间件理解
MQ 的产品种类
天上飞的理念必定有落地的实现,MQ 这么多怎么学?
任正非先生说过一句话:对着一个城墙口发起冲锋,总分总研究学习,找到学习方法总结经验,内化吸
收!
MQ 产品 种类:
Kafka
RabbitMQ
RocketMQ
ActiveMQ (学会它,然后举一反三)
API 发送和接收
MQ 的高可用性
MQ 的集群和容错配置
MQ 的持久化
延时发送、定时投递
签收机制
整合Spring、SpringBoot
1.2、为什么要MQ
常见面试题:你不会说,就说明你对其不够理解!所以底子很重要!
1、在何种场景下使用了消息中间件?
2、为什么要在系统里引入消息中间件?
3、引入了消息中间件有哪些好处?又有哪些坏处?你是如何避免的!
生活中的例子
MQ 能干嘛?
解耦
消峰
异步
为什么要引入MQ,问题的产生背景
系统之间直接调用在实际工程中存在的问题?
微服务架构后,链式调用是我们在写程序的时候的一般流程,为了完成一个整体功能会将其拆分成多个
函数(或子模块),比如模块A调用模块B,模块B调用模块C,模块C调用模块D,但在大型分布式应用
中,系统间的RPC交互繁杂,一个功能背后要调用上百个接口并非不可能,从单机架构过渡到分布式微
服务架构的通例,这种架构会有哪些问题?
1、系统之间接口耦合比较严重
每新增一个下游功能,都要对上游的相关接口进行改造。比如 系统A 要发送数据给系统B 和 C,发送给
每个系统的数据可能有差异,因此系统A对要发送给每个系统的数据进行了组装,然后逐一发送;、
当代码上线后又新增了一个需求:
把数据也发给D,新上了一个D系统也要接受A系统的数据。此时就需要修改A系统,让他感知到D的存
在。同时把数据处理好再给D。这个过程中你会看到,每接入一个下游系统,都要对A系统进行代码改
造,开发联调的效率很低。
2、面对大流量并发时,容易被冲垮
每个接口模块的吞吐能力是有限的,这个上限能力比作是堤坝,当大流量(洪水)来临时,容易被冲
垮。
比如秒杀业务:
上游系统发起下单购买操作,我就是下单一个操作,下游系统完成秒杀业务逻辑(读取订单,库存检
查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解
冻)
3、等待同步存在性能问题
RPC接口基本上是同步调用,整体的服务性能遵循 “木桶理论”,即整体系统的耗时取决于链路中最慢的
那个接口。
比如A调用B/C/D都是50ms,但此时B又调用了B1,花费2000ms,那么直接就拖累了整个服务性能。
需要有一种技术能够摆平上述情况:
1、要做到系统解耦,当新的模块接进来时,可以做到代码改动最小;能够解耦
2、设置流量缓冲池,可以让后端系统按照自身吞吐能力进行消费,不被冲垮; 能够削峰
3、强弱依赖梳理能将非关键调用链路的操作异步化并提升整体系统的吞吐能力;能够异步
1.3、是什么
定义
面向消息的中间件(message-oriented middleware)MOM 能够很好的解决以上问题。
是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集
成。
通过提供消息传递和消息排队模型在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异
步通信、数据同步等功能。
大致的过程如下:
发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列/主题 中,在合适的时候,消息服
务器会将消息转发给接受者。在这个过程中,发送和接收是异步的,也就是发送无需等待,而且发送者
和接收者的生命周期也没有必然关系。
尤其在发布pub/订阅sub模式下,也可以完成一对多的通信,即让一个消息 有多个接受者。
特点
采用异步处理模式
消息发送者可以发送一个消息而无需等待响应。消息发送者将消息发送到一条虚拟的通道(队列、主
题)上;
消息接收者则订阅或监听该通道。一条信息可能最终转发给一个或多个消息接收者,这些接收者都无需
对消息发送者做出同步回应。整个过程都是异步的。
例子:
也就是说,一个系统跟另外一个系统之间进行通信的时候,假如系统A希望发送一个消息给系统B,让他
去处理。
但是系统A不关注系统B到底怎么处理或者有没有处理好,所以系统A把消息发送给 MQ,然后就不管这
条消息的 死活的,接着系统B从MQ里消费出来处理即可。至于怎么处理,是否处理完毕,什么时候处
理,都是系统B的事儿,与系统A无关。
剩余70页未读,继续阅读
司嘉
- 粉丝: 0
- 资源: 43
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 51单片机学习(1)-软件keil下载
- 历届(第1-21届)希望杯数学竞赛初一试题及答案(最新整理).doc全国数学邀请赛(264页资料)
- 水滴.psd
- TokenPocket_V2.1.2_release.apk
- Apache-druid-kafka-rce.yaml
- 基于C#的ASP.NET数据库原理及应用技术课程指导平台的开发
- 基于ROS的智能车轨迹跟踪算法的仿真与设计源码运用PID跟踪算法.zip.zip
- Bug Bounty Tip - i春秋Self-XSS变废为宝的奇思妙想
- 1991-2015年全国初中化学竞赛复赛试题汇编(212页)(24年竞赛复赛真题).docx天原杯
- Apache Flink 未授权访问+远程代码执行.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0