Message Query(消息队列)是如何解耦、异步、削峰的

1、解耦

使用消息队列时,每个消费者服务都是独立的,当我系统里的一个模块宕机了,不会影响到我其他服务。 拿淘宝下单来说:发淘金币服务挂了,和减账户余额有什么关系,发淘金币服务挂了,我还是可以正常减账户余额,只不过后期可以数据补偿或者分布式事务去解决这个问题。

2、削峰

比如说我平时服务就只能支撑几万的qps,像淘宝京东那种秒杀,那时候服务突然打进来,这秒杀进来的所有的请求都不会直接打到具体服务上,都会先打到消息队列里,然后我后面的服务再慢慢消费。 可以看看淘宝京东双11秒杀的时候,是不是有的时候慢是慢了点,但是服务起码没挂。等我秒杀结束之后,服务还能正常运转。 消息队列就像是一个三峡大坝,用来拦截上游给的压力。

3、异步

连接消息队列的服务可以异步去执行。而且每次多增加一个步骤,我下单的代码是不需要动的,只需要再增加一个消费者即可。

经验分享 程序员 微信小程序 职场和发展