MQ(Message Queue) 消息队列
1. 概念
是一种先进先出的数据结构
2. 应用场景
-
应用解耦
高耦合会导致应用容错性降低,如上图支付库存物流任何一个下游应用因故障或其他原因不可用都会导致上游订单系统异常影响用户体验。
使用消息队列后,下游应用不可用时,上游应用可将要处理的请求缓存在MQ中。当下游应用恢复后处理在消息队列中保存的请求。上游应用感知不到下游应用发生中断。 -
数据分发
通过接口调用分发数据,需要应用系统随数据消费方变化修改代码。
使用消息队列进行数据分发,可使数据生产方不需要关心谁来使用数据。只需要将数据发送至消息队列,数据消费方直接在消息队列中获取数据即可。 -
流量消峰
应用系统如果遇到请求流量瞬间猛增,可能会将系统压垮。一般情况,为了保证系统稳定性,如果系统负载超过阈值,会阻止用户请求,这回影响用户体验。消息队列可将大量请求缓存起来,分散到更长的一段时间处理,从而提高系统稳定性和用户体验。
如果出于经济性角度考量,为了应对流量高峰配置高性能服务器显然不划算,此时可以使用消息队列进行消峰。