关键词

异步、削峰、解耦、消息分发、大事务拆分成 (小事务+ 异步)、错误重试、消费者幂、分布式、重复消费、消息丢失、顺序消费等

什么是消息队列(MQ)?

队列是一种先进先出的数据结构。但是作为中间件,跟单机中的队列是不一样的。 毫无疑问,单机的队列是无法满足需求的,集群/分布式。 消除了单点故障、保证消息可靠性等。消息队列可以简单理解为:把要传输的数据放在队列中。消息队列做业务解耦/最终一致性/广播/错峰流控等。反之,如果需要强一致性,关注业务逻辑的处理结果,则RPC显得更为合适。

名称定义

优点

解耦

作为一个订单系统,我们可以需要在创建订单、有库存信息或者有物流信息调用其它子系统。耦合严重。如某个系统挂了,导致该接口异常。将消息发送到队列中,需要使用的系统,去订阅的方式

异步

非必要的操作,异步去处理。而不是同步。比如下单支付完之后,发送等短信,发送短信的结果不应该影响 用户下单,这样异步化,可以提供接口qps。当然,异步的方式有很多,比如你开启线程池处理等。

削峰

在秒杀或者有活动的时候,通过先把请求放到队列里面,然后至于每秒消费多少请求,就看自己的服务器处理能力,你能处理5000QPS你就消费这么多,可能会比正常的慢一点,但是不至于打挂服务器。等活动结束之后,可以慢慢消费队列中的数据。比如3更半夜去消费等。比如常见的压单等操作

缺点

数据一致性