消息中间件在后台系统中是必不可少的一个组件,一般我们会在以下场景中使用消息中间件:

异步处理:异步处理是使用消息中间件的一个主要原因,在工作中最常见的异步场景有用户注册成功后需要发送注册成功邮件、缓存过期时先返回老的数据,然后异步更新缓存、异步写日志等等;通过异步处理,可以减少主流程的等待响应时间,让非主流程或者非重要业务通过消息中间件做集中的异步处理。

系统解耦:比如在电商系统中,当用户成功支付完成订单后,需要将支付结果给通知ERP系统、发票系统、WMS、推荐系统、搜索系统、风控系统等进行业务处理;这些业务处理不需要实时处理、不需要强一致,只需要最终一致性即可,因此可以通过消息中间件进行系统解耦。通过这种系统解耦还可以应对未来不明确的系统需求。

削峰填谷:当系统遇到大流量时,监控图上会看到一个一个的山峰样的流量图,通过使用消息中间件将大流量的请求放入队列,通过消费者程序将队列中的处理请求慢慢消化,达到消峰填谷的效果。最典型的场景是秒杀系统,在电商的秒杀系统中下单服务往往会是系统的瓶颈,因为下单需要对库存等做数据库操作,需要保证强一致性,此时使用消息中间件进行下单排队和流控,让下单服务慢慢把队列中的单处理完,保护下单服务,以达到削峰填谷的作用。

image


https-mmbiz


目录

消息队列对比参照表 MQ 消息丢失、重复、积压问题,如何解决
什么是消息队列? 云原生时代消息中间件的演进路线 MQ 主流的MQ的对比与业务选型
ELK-实践(架构选择&部署说明) 对 Kafka 和 Pulsar 进行性能测试后,拉卡拉将消息平台统一换成了 Pulsar
Pulsar出现,再见RocketMQ!全新一代消息中间件,带可视化管理,文档贼全

目录

MQ视频

有用的参考