MQ 的优势
1 应用解耦:提高系统容错性和可维护性
- 不使用MQ:系统的耦合性越高,容错性就越低,可维护性就越低。
- 使用MQ:使用 MQ 使得应用间解耦,提升容错性和可维护性。
2 异步提速:提升用户体验和系统吞吐量
不使用MQ:
响应时间:20 + 300 + 300 + 300 = 920ms
使用MQ:
响应时间:20 + 5 = 25ms
3 削峰填谷:提高系统稳定性
不使用MQ:超过系统能承受的最大请求,系统崩溃
使用MQ:不会超过系统能承受的最大请求
削峰填谷
RabbitMQ的架构
- Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker
- Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue 等;RabbitMQ 默认vhost 是 /
- Connection:publisher/consumer 和 broker 之间的 TCP 连接
- Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection