RocketMQ系列---MQ的好处

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zhuyanlin09/article/details/101750068

MQ简介

什么是MQ 跨进程的消息队列,主要角色包括生产者与消费者。 生产者只负责生产信息,无法感知消费者是谁,消息怎么处理,处理结果是什么。 消费者负责接收及处理消息,无法感知生产者是谁,怎么产生的。

作用及意义

1.消息异步:

上游直接调用下游

åºæ¯ä¸¾ä¾

缺点:

  • 上游关注执行结果,但执行时间很长
  • 上游需要同步等待下游执行结果
  • 下游系统故障导致上游系统无法使用
  • 下游增加需修改上游代码

使用MQ调用(异步)

åºæ¯ä¸¾ä¾

使用MQ的优点:

  • 上游无需等待下游执行完毕,加快上游响应速度
  • 下游系统故障不会影响上游系统的运行
  • 增加下游只需订阅 MQ

2.解耦

服务解耦:系统解耦,用户系统或者其他系统需要发送短信可以通过 MQ 执行;很好的将 用户系统 和 短信系统进行解耦;

采用MQ的优点是:

  • 不需要预留 buffer,上游任务执行完,下游任务总会在第一时间被执行
  • 依赖多个任务,被多个任务依赖都很好处理,只需要订阅相关消息即可
  • 有任务执行时间变化,下游任务都不需要调整执行时间

3.削峰

请求高峰期

举个例子:系统A一天中大部分时间每秒请求并发数量就 100 多个,但是中午12点-1点每秒请求并发量就飙升到 10000 多个,但是系统每秒最大能处理的请求量只有 1000 多。

  • 不使用MQ

åºæ¯ä¸¾ä¾

这个时候如果让系统硬抗会导致系统挂掉

  • 使用MQ

通过使用 MQ 达到限流的效果,系统无法处理的请求会堆积在 MQ 中,高峰期过后系统可以继续消费 MQ 中的请求。

åºæ¯ä¸¾ä¾

使用MQ的优点:

      系统不会因为高峰期的请求量挂掉

引入MQ带来的问题:

  • 可用性降低

    系统引入的外部依赖越多,越容易挂掉,MQ 挂掉之后会导致整个系统不可用。

  • 复杂度提高

    重复消费、消息丢失、消息的顺序性等这些都是引入 MQ 之后需要考虑的事情。

  • 一致性问题

    A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是 BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,就会导致数据不一致。

猜你喜欢

转载自blog.csdn.net/zhuyanlin09/article/details/101750068