一 前情回顾
上篇文章《做了几年开发,你知道自己的系统为什么要用消息中间件吗?》,给大家讲了讲消息中间件引入系统架构的作用,主要是解决哪些问题的。
其比较常见的实践场景是:
- 复杂系统的解耦
- 复杂链路的异步调用
- 瞬时高峰的削峰处理
二 正式开始
这篇文章给大家讲讲,如果你在系统架构里引入了消息中间件之后,会有哪些缺点?
1 系统可用性降低
首先是你的系统整体可用性绝对会降低,给你举个例子,我们就拿之前的一幅图来说明。
比如说一个核心链路里面,系统A -> 系统B -> 系统C,然后系统C是通过MQ异步调用系统D的。
看起来很好,你用这个MQ异步化的手段解决了一个核心链路执行性能过差的问题。
但是你有没有考虑另外一个问题,就是万一你依赖的那个MQ中间件突然挂掉了怎么办?这个还真的不是异想天开,MQ、Redis、MySQL这些组件都有可能会挂掉。
一旦你的MQ挂了,就导致你的系统的核心业务流程中断了。本来你要是不引入MQ中间件,那其实就是一些系统之间的调用&#