目录
一、前情提示
二、清晰划分系统边界
三、引入消息中间件解耦
四、利用消息中间件削峰填谷
五、手动流量开关配合数据库运维
六、支持多系统同时订阅数据
七、系统解耦后的感受
八、下集预告
一、前情提示
上一篇文章《高并发+海量数据下如何实现系统解耦?【上】》,给大家初步讲述了一套大规模复杂系统中,两个核心子系统之间一旦耦合,会发生哪些令人崩溃的场景。如果还没看上篇文章的,建议先看一下。
这篇文章,咱们就给大家来说一说通过MQ消息中间件的使用,如何重构系统之间的耦合,让系统具备高度的可扩展性。
首先来回看一下之前画的一张两个系统之间进行耦合的一个大图,从这个图里我们可以看到两个系统完全通过一套共享存储(数据库集群+缓存集群)进行了耦合。
二、清晰的划分系统边界
只要有耦合,一旦要解决耦合,那么第一个要干的事儿就是先划分清楚系统之间的边界。
比如上面那两套系统都共享了一套存储集群,那么大家可以先思考一下,两个系统之间的边界应该如何划分?也就是说,中间那套缓存集群和数据库集群,到底应该是属于哪个系统?
首先我们看一下,缓存集群和数据库集群主要是给谁用的?
很明显就是给数据查询平台用的,说白了,那两套集群都是数据查询平台赖以生存的核心底层数据存储,这里存储的数据也都是属于数据查询平台的核心数据。
对于实时计算平台来说,他只不过是将自己计算后的结果写入到缓存集群和数据库集群罢