MQ介绍
1. MQ概述
MQ(Message Queue):消息队列,是基础数据结构中FIFO(first in first out)的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题,实现高性能,高可用,可伸缩和最终一致性架构。
- 高性能:性能好,性能高
- 高可用:程序不会随便挂,系统的稳定性强
- 可伸缩:增加计算机资源的时候程序的吞吐和处理能力页跟随增加
- 最终一致性:存进来和取出去的数据是一致的
图上这种情况,耦合性很大,如果其中一个系统挂掉了,整个系统就停止了
下面这种情况使用了中间件,订单系统直接向中间件发起请求,这样各个系统的耦合性降低
小结:
- MQ:消息队列,用于消息传递的中间件
- 发送消息方称为生产者
- 接收消息方称为消费者
2. MQ优缺点
- 优点:
- 流量削峰:避免流量高峰期导致系统挂掉,提高系统的稳定性
- 应用解耦:降低系统之间的依赖,提高系统容错率
- 异步请求:提速增效,提升用户体验
削峰:
-
RPS 1000:每秒处理请求的数量为1000
-
MQ可以让程序架构高内聚,低耦合
解耦:
异步处理:
-
缺点
- 提高了系统的复杂度,降低了系统稳定性和可用性
- 引入了第三方技术,增加了宕机的风险
- 如何保证系统高可用
- 带来了数据一致性的问题
- 各系统间的调用增加了不确定性,如何保证最终一致性
- 怎么处理消息丢失的情况
- 提高了系统的复杂度,降低了系统稳定性和可用性
小结:
- 优点
- 流量消峰:避免流量高峰时期导致系统挂掉,提高系统稳定性
- 应用解耦:降低系统间依赖,提高系统容错性
- 异步处理:提速增效,提高用户体验感
- 缺点
- 提高了系统复杂度,降低了系统稳定性和可用性
- 带来了数据一致性问题
3.常见的MQ介绍
AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。2006年,AMQP 规范发布。
4.RabbitMQ概述
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。
官网地址:https://www.rabbitmq.com/
- 架构图:
5.RabbitMQ名词解释
- Producer:生产者,发送消息的程序
- Consumer:消费者,接收消息的程序
- Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker
- Connection:生产者,消费者,Broker之间的TCP连接
- Channel:通信连接信道,降低TCP连接开销
- Virtual host:虚拟主机
- Exchange:交换机,message 到达 broker 先存放到交换机
- Queue:队列,消费者从这里获取消息
- Binding:交换机与队列之间的虚拟连接,用于消息分发
6.RabbitMQ工作模式
从官网抄过来的: