MQ简介
- MQ 全程 Message Queue ,主要用于分布式系统。重要且复杂,功能强大,在解决问题的时候会产生新问题,比如高可用,幂等性
- 消息发送者 称为生产者;接受者称为消费者
MQ 优点
- 应用解耦
通常系统之间提倡高内聚 低耦合。在分布式系统需要降低系统之间的耦合性,提高整个系统的容错性;耦合性越高,容错性越低;
比如 分布式多个系统: 订单系统直接和 对应的 库存、支付、物流系统进行调用,一旦订单系统出现问题,其他对应的系统会挂掉。
如图:
可以在订单系统 和对应系统之间加上MQ,订单系统作为生产者只关给发消息给MQ,其他子系统负责 消费,就提供高了应用解耦,
如果有一天需要再加一个子系统,那就方便多了,如图来:
应用解耦 提高了系统的容错性和可维护性 - 异步提速
订单系统通过MQ来保存订单信息,其对应的子系统逐步消费,这样的订单系统的性能提高了用户的体验,吞吐量。如图: - 削峰填谷
削峰:A系统每秒的处理1000个提交,比如A系统晚上6点有抢卷活动,届时可能有10000/s个请求来访问A系统,必然奔溃;
可通过MQ 接受请求,A系统作为消费者逐步处理这个10000个请求。
填谷:MQ持续处理处理高并发产生的大量请求数据,直到这些数据被处理完
削峰填谷提高了系统的稳定性
MQ 缺点
- 系统的可用性降低:一单MQ宕机,就会对业务造成影响
- 系统复杂性:防止被重复消费,数据丢失,业务执行顺序。
- 一致性问题:系统数据一致性问题保证
MQ 总结
- 什么时候 使用MQ?
A 系统调用B系统,必须等待B系统的反馈后才能做其他操作,这样不适合用MQ- 强大且复杂,增加的系统的复杂性和出错的几率。
- 容许数据暂短的不一致
Rabbit 工作模式类型分别介绍(.NET Core)
总结