mq基础

mq概念

MQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器(是一种先进先出数据结构),多用于分布式系统之间进行通信。

 

mq的作用

解耦、异步、削峰填谷

解耦

降低系统耦合性,提高了可维护性。

 

异步

削峰填谷

5000 个请求写入到 MQ 里面,系统 A 每秒钟最多只能处理 2000 个请求(MySQL 每秒钟最多处理 2000 个请求),系统 A 从 MQ 里慢慢拉取请求,每秒钟拉取 2000 个请求。MQ,每秒钟 5000 个请求进来,结果只有 2000 个请求出去,结果导致在高峰期(21小时),可能有几十万甚至几百万的请求积压在 MQ 中,这个是正常的,因为过了高峰期之后,每秒钟就 50 个请求,但是系统 A 还是会按照每秒 2000 个该请求的速度去处理。只要高峰期一过,系统 A 就会快速的将积压的消息给解决掉。

 

消息模型

点对点消息队列模型

允许多个生产者往同一个队列发送消息。但是,如果有多个消费者,实际上是竞争的关系,也就是一条消息只能被其中一个消费者接收到,读完即被删除。

 

发布-订阅模型

在发布-订阅模型中,存放消息的容器变成了 “主题”,订阅者在接收消息之前需要先 “订阅主题”。最终,每个订阅者都可以收到同一个主题的全量消息。

仔细对比下它和 “点对点队列模式” 的异同:生产者就是发布者,队列就是主题,消费者就是订阅者,无本质区别。唯一的不同点在于:一份消息数据是否可以被多次消费。

 

引用mq带来的技术难点

(1) 系统可用性降低
系统引入的外部依赖越多,系统稳定性就越差。一旦MQ宕机,就会对业务产生影响,必须保证MQ的高可用。

(2) 系统复杂性提高
MQ的加入大大增加了系统的复杂性,需要保证消息没有被重复消费、保证消息的可靠性(消息丢失)、保证消息传递的顺序性。

(3)一致性问题
对于MQ中传来的消息数据,如果A、B系统处理成功了,C系统处理失败了,如果保证数据处理的一致性?

 

https://www.zhihu.com/question/54152397/answer/1802083263

https://zhuanlan.zhihu.com/p/138624006

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值