为什么要使用消息队列呢?
为什么要使用消息队列呢?
消息队列主要有三个主要用途,以下以电商系统的下单为例进行说明:
- 解耦:在引入消息队列之前,完成下单后,订单服务需要调用库存服务减少库存,调用营销服务增加营销数据等。引入消息队列后,可以将订单完成的消息放入队列中,让下游服务自行处理,从而实现订单服务与其他服务的解耦合。
- 异步:在订单支付后,需要执行库存扣减、积分增加、消息发送等操作。这样的操作链路较长,导致响应时间延长。通过引入消息队列,除了更新订单状态需要同步处理外,其他操作都可以异步进行,从而降低响应时间。
- 削峰:消息队列常用于削峰操作,例如在秒杀系统中,平时流量较低,但在秒杀活动期间,流量会急剧增加。而服务器、Redis、MySQL等各自的承载能力有限,直接承受全部流量可能导致系统崩溃。通过将请求放入队列中,只处理服务能够处理的流量,可以有效抵御短时间内的大流量压力。
解耦、异步和削峰是消息队列的三个主要作用。