中间件 MQ(消息队列,Message Queue) 是一种分布式通信中间件,核心功能是异步传递消息,解决分布式系统中 “服务间解耦、流量削峰、可靠通信” 的问题。以下是结合实际场景的通俗解释:
类比场景:你去餐厅点餐,服务员先把订单写在小票上(消息入队),厨师按顺序做菜(异步处理),你不用一直盯着厨房(解耦)。高峰期订单太多时,小票会积压(削峰),不会让厨房直接崩溃。
技术定义: MQ 是介于应用程序之间的 “消息快递员”,发送方(Producer)将消息丢进队列,接收方(Consumer)按自己的节奏取走处理,无需实时等待响应。
特性 | MQ(如 RabbitMQ) | 缓存(如 Redis) |
---|---|---|
通信模式 | 异步(Producer/Consumer 无需实时交互) | 同步(需立即读写) |
核心价值 | 解耦、削峰、可靠传递 | 高性能读写、数据缓存 |
消息处理 | 支持消息顺序、事务、死信队列 | 不保证顺序,纯 Key-Value 存储 |
典型场景 | 订单异步通知、日志收集、流量缓冲 | 商品库存缓存、高频查询加速 |
产品 | 适用场景 | 优势 | 缺点 |
---|---|---|---|
Kafka | 高吞吐日志、实时流处理 | 单集群日处理万亿级消息 | 不保证严格顺序,适合大数据场景 |
RabbitMQ | 金融级可靠消息、精准路由 | 支持事务、死信队列、ACK 机制 | 吞吐量相对低(万级 /s) |
RocketMQ | 阿里系电商、分布式事务 | 分布式事务、消息重试策略 | 社区生态不如 Kafka 成熟 |
kafka-consumer-groups.sh --describe --group 消费组名
查看lag
值(如 10 万条积压)✅ 当系统需要异步处理(如注册后发邮件) ✅ 当服务间耦合度高(如订单、库存、支付多个系统) ✅ 当面临流量波动(如秒杀、大促活动) ❌ 不要用 MQ:简单的同步调用(如用户登录验证),反而增加系统复杂
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。