什么样的场景使用消息队列比较合适?哪些任务需要用消息队列去异步处理,你是怎么划分的?
消息队列(MQ)适合解耦、异步和削峰的场景,典型包括高并发、耗时操作、非实时任务或跨系统通信。具体场景如订单处理、日志记录、通知推送等。
需要异步处理的任务
- 耗时任务:如文件上传、数据导出。
- 非核心/非实时任务:如日志收集、邮件发送。
- 高并发削峰:如秒杀订单写入。
- 分布式协作:跨服务的数据同步。
如何划分
- 实时性:核心业务同步,非核心异步。
- 依赖性:强依赖同步,弱依赖异步。
- 性能影响:耗时或高并发任务异步。
1. 适合使用消息队列的场景详解
(1) 系统解耦
- 场景:
- 订单系统 -> 库存系统 -> 物流系统。
- 问题:
- 同步调用,库存超时影响订单。
- 解决:
- 订单发 MQ,库存异步消费。
- 优点:
- 系统独立,互不阻塞。
(2) 异步处理
- 场景:
- 用户注册后发邮件。
- 问题:
- 同步发送邮件延迟用户响应。
- 解决:
- 注册成功后入 MQ,邮件服务消费。
- 优点:
- 提升主流程速度。
(3) 流量削峰
- 场景:
- 秒杀活动,10 万 QPS 订单。
- 问题:
- 数据库扛不住瞬时压力。
- 解决:
- 订单入 MQ,异步批量