MQ本质
# MQ
# 本质
# 一发一存一消费
生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已
# 模型进化
# 队列模型
这便是队列模型:它允许多个生产者往同一个队列发送消息。但是,如果有多个消费者,实际上是竞争的关系,也就是一条消息只能被其中一个消费者接收到,读完即被删除。
# 发布-订阅模型
需求:如果需要将一份消息数据分发给多个消费者,并且每个消费者都要求收到全量的消息
所以产生了发布-订阅模型,发布-订阅模型中,存放消息的容器
变成了 主题
,订阅者在接收消息之前需要先 订阅主题
。最终,每个订阅者都可以收到同一个主题的全量消息。
仔细对比下它和 “队列模式” 的异同:生产者就是发布者,队列就是主题,消费者就是订阅者,无本质区别。唯一的不同点在于:一份消息数据是否可以被多次消费。
# 透过模型看 MQ 的应用场景
# 1. 系统解耦
生产者 和 消费者 解耦,生产者只和队列耦合,消费者只和队列耦合
# 2. 异步通信
系统只需要关注更新订单状态,其他随带的状态更新,可以作为异步推送,能减少订单支付的整体耗时,提升订单系统的吞吐量
# 3. 流量削峰
除此以外,由于队列能转储消息,对于超出系统承载能力的场景,可以用 MQ 作为 “漏斗” 进行限流保护,即所谓的流量削峰。
上次更新: 2022/01/03, 23:02:56