目录
1、背景
消息队列是一种异步通信机制,用于在分布式系统中解耦生产者和消费者,它允许应用程序通过发送和接收消息来进行通信,而不需要直接连接。
2、核心概念
1、生产者(Producer):创建并发送消息的应用程序
2、消费者(Consumer):接收并处理消息的应用程序
3、消息(Message):传输的数据单元
4、队列(Queue):存储消息的缓冲区
5、代理(Broker):管理队列的中间件服务
3、主要特性
1、异步通信:生产者和消费者不需要同时在线
2、解耦:系统组件间依赖降低
3、削峰填谷:缓冲突发流量
4、可靠性:确保消息不丢失
5、扩展性:容易水平扩展
4、常见消息队列系统
【1】RabbitMQ
1、基于AMQP协议
2、轻量级,易于部署
3、支持多种消息模式
【2】Apache Kafka
1、高吞吐量
2、分布式设计
3、持久化日志存储
4、适合大数据场景
【3】ActiveMQ
1、支持多种协议
2、成熟稳定
3、JMS实现
【4】RocketMQ
1、阿里开源
2、低延迟
3、高可用
5、消息模式
【1】点对点(Queue)
1、一个消息只能被一个消费者消费
2、消息消费后从队列移除
【2】发布/订阅(Topic)
1、一个消息可被多个消费者消费
2、消息广播模式
【3】请求/响应
1、同步通信模式
2、需要等待响应
6、使用场景
1、异步处理(如发送邮件、短信)
2、应用解耦(微服务架构)
3、流量削峰(秒杀系统)
4、日志收集
5、事件驱动架构
6、数据同步
7、消息队列的挑战
1、消息顺序:保证消息处理的顺序性
2、消息幂等:防止重复消费
3、消息堆积:消费者处理能力不足
4、事务消息:跨系统数据一致性
5、监控管理:消息跟踪和监控
8、最佳实践
1、合理设置消息TTL(生存时间)
2、实现死信队列处理失败消息
3、监控队列长度和消费延迟
4、设计幂等消费者
5、考虑消息压缩减少网络开销