RabbitMQ 知识总结

一、为什么使用 MQ?

好的架构不是设计出来的,是演进出来的,使用 MQ 必定有其道理,是用来解决实际问题的。其实使用 MQ 的场景挺多的,但是比较核心的有 3 个:异步、解耦、削峰填谷。

二、MQ 优缺点

1、系统可用性降低
大家想象一下,上面的说解耦的场景,本来 A 系统的哥们要把系统关键数据发送给 BC 系统的,现在突然加入了一个 MQ 了,现在 BC 系统接收数据要通过 MQ 来接收。但是大家有没有考虑过一个问题,万一 MQ 挂了怎么办?这就引出一个问题,加入了 MQ 之后,系统的可用性是不是就降低了?因为多了一个风险因素:MQ 可能会挂掉。只要 MQ 挂了,数据没了,系统运行就不对了。

2、系统复杂度提高
本来我的系统通过接口调用一下就能完事的,但是加入一个 MQ 之后,需要考虑消息重复消费、消息丢失、甚至消息顺序性的问题。为了解决这些问题,又需要引入很多复杂的机制,这样一来是不是系统的复杂度提高了。

3、数据一致性问题
本来好好的,A 系统调用 BC 系统接口,如果 BC 系统出错了,会抛出异常,返回给 A 系统让 A 系统知道,这样的话就可以做回滚操作了。但是使用了 MQ 之后,A 系统发送完消息就完事了,认为成功了。而刚好 C 系统写数据库的时候失败了,但是 A 认为 C 已经成功了?这样一来数据就不一致了。通过分析引入 MQ 的优缺点之后,就明白了使用 MQ 有很多优点,但是会发现它带

你可能感兴趣的:(rabbitmq)