MQ优缺点

使用mq的好处

  1. 解耦与复用

    系统 A 要发送一个消息到多个系统,如果此时每增加一个系统,系统 A 都需要通过修改源码来增加接口,此时耦合非常高,但是如果中间使用消息队列的话,系统只需要发送一次到消息队列,别的系统就能复用该信息,当增加或删除系统调用接口的时候,不需要额外的更新代码。

  2. 异步

    用户调用一个接口的时候,可能该接口调用了别的方法。例如:用户注册的时候,后台可能需要调用:查询数据库,插入数据库,发送邮件,发送用户指南等等…

    但是用户可能并不需要后台将所有的任务执行完毕,那么此时在初入数据口后面加入 mq 队列,用户就能很快得到注册成功的响应而去做一些别的事情。mq 的机制又能保证最终的一致性,所以使用起来很安全很稳定。

  3. 消峰

    何为消峰,就是当系统压力过大的时候,让系统压力减小。如何做?

    加入数据库的读写每秒 3000,在高峰期,系统的访问达到了每秒 10000。此时由于加入了消息队列,所以不会出现激增的访问导致系统奔溃。

    (注意,晓峰并不会让用户的等待时间减少,所以一般会跟异步搭配来使用)

使用mq的缺点

  1. 增加了复杂度与降低了可用性

    本来系统之间直接通行调用接口就行了,但是引入了 mq 导致系统的复杂度大大增加,并且如果 mq 挂掉了,那么系统之间的通信就中断了,导致整个系统的全部挂掉。

  2. 一致性问题

    A 系统处理完了发送到消息对流后直接返回成功了,用户以为你这个请求就成功了;但是问题是,其他系统消费该消息后,如果当中有一个系统出现了问题,导致数据丢失。最后就会发生数据不一致等问题。