第一章 消息队列入门基础 v1.0
消息队列是分布式系统中重要的组件,用于实现异步通信、解耦和流量削峰
第一部分 消息队列简介
一、什么是消息队列
消息队列(Message Queue,MQ)是一种进程间通信或同一进程的不同线程间的通信方式。MQ用于存放消息,也就是事件驱动架构中的Broker。消息发送后立即返回,由消息系统保证消息的可靠传递。

二、同步通讯
例:微服务间基于Feign的调用就属于同步方式

优点:时效性较强,可以立即得到结果
存在的问题:
- 耦合度高:每次加入新的需求,都要修改原来的代码
- 性能下降:调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和。
- 资源浪费:调用链中每个服务在等待响应过程中,不释放请求占用的资源,高并发场景下极度浪费系统资源
- 级联失败:如果服务提供者出现问题,所有调用方都会跟着出问题,迅速导致整个微服务群故障
三、异步通讯

事件驱动架构
优点:
- 耦合度低:服务解耦,服务之间耦合度小,更有利于业务的变更
- 性能提升,吞吐量提高
- 故障隔离:服务之间没有强依赖,不会出现级联失败问题
- 流量削峰
存在的问题:
- 依赖于Broker的可靠性、安全性、吞吐能力
- 架构复杂,业务没有明显的流程线,不好追踪管理
四、消息队列的作用
- 异步处理:将耗时操作异步化,提高系统响应速度
- 系统解耦:降低系统间的耦合度
- 流量削峰:应对突发流量,保护后端系统
- 数据分发:实现数据的广播和分发
第二部分 常用消息队列
一、RabbitMQ
RabbitMQ是使用Erlang语言开发的开源消息队列系统,支持多种消息协议。
二、Apache Kafka
Kafka是LinkedIn开源的分布式消息系统,具有高吞吐量、低延迟的特点。
三、RocketMQ
RocketMQ是阿里巴巴开源的分布式消息中间件,具有高可用、高可靠的特点。
第三部分 消息队列模型
一、点对点模式
消息生产者发送消息到队列,消息消费者从队列中取消息。一条消息只能被一个消费者消费。
二、发布/订阅模式
消息生产者将消息发布到主题,所有订阅该主题的消费者都会收到消息。
第四部分 消息队列的使用场景
一、异步处理
用户注册后,发送注册邮件和注册短信。
二、系统解耦
订单系统调用库存系统,通过消息队列解耦。
三、流量削峰
秒杀活动,将请求放入消息队列,后端系统按照处理能力消费消息。