首页 > 数据库 > 数据库开发技术 > 如何利用"拆分"降低架构复杂度
拆分是架构设计大型复杂系统的第一步,对降低系统复杂性有决定性的意义,是架构师的必备技能。

迟早药丸
为什么要做拆分
一个好的拆分能够降低各个模块间的耦合性,极大地降低效率消耗,提升系统成功的可能性。

外星伴侣

何时拆分
1、系统常年处于多需求并行开发,导致代码维护成功太大
2、在开发一个需求的时候,花费几天时间阅读代码,而开发只需要一半甚至更少的时间
3、在一个需求上线前,需要召集上百人对齐上线风险和上线步骤
樱花烟雨
拆分的前提条件
1、团队和人员的准备
2、在进行拆分后,各个模块不在一个进程内,需要进行接口依赖的形式
慢慢等
如何进行拆分
1、目的性拆分:后台业务系统分为三大类,读服务、写服务、扣减服务
2、业务性拆分:你在购物的时候,要先通过认证登录APP,再浏览商品,查看促销活动及价格,确认购买后添加到购物车并提交订单。
不管经过多少次的拆分和组合,目标只有一个----降低系统的复杂度,减少耦合提升效率。
虽然没有绝对的架构拆分标准,但从我的经验来看,大型系统一般先采用两次垂直拆分再加一次水平拆分。这两次垂直拆分有一定的先后顺序,再进行业务维度再按技术维度。
未来可期
举例如下:
我们微信读书大致分为下面几个步骤
注册并登陆App
在书城找到你想阅读的图书,并浏览书籍的版本目录和介绍
是你想要的书,就会产生购买
支付完成之后,开始阅读
我们可以进行第一步拆分:
注册登录属于用户模块
浏览书属于商品模块
价格根据是不是会员计算不同的架构属于促销模块
购买是订单模块
完成支付是支付模块
进行第二步拆分:
用户模块,一个是用户注册,另一个是登录验证,可以成为查询,一分为二,读模块和写模块。读写分离
然后我们有第三步拆分:
用户读模块和用户写模块需要进行数据库访问,中间加入一层数据访问层,就形成了业务逻辑层和数据访问层的水平拆分。

当需求不断叠加导致并行开发和上线时,通过拆分可以减少相互影响。
当维护一个覆盖范围比较广的业务系统,从而导致研发人员业务专业度不够高时,通过拆分可以适当聚焦,提升专业度。
当一个系统范围较广同时线上 Bug 不断时,就需要适当拆分,逐个击破。
在落地进行拆分时,有几个重要准则需要你牢牢记住。
拆分是按维度逐层进行,从顶层逐步向下。在顶层按业务及业务流程进行垂直拆分,而不是按技术或其他。
在此之后,对于拆分得到的具体模块,可以按读写分离、在线离线分离、快慢分离、场景分离等方式做进一步的水平拆分。
在模块内部的垂直拆分完成之后,可以按易变与稳定、共性与非共性进行水平拆分。需要注意的是,第二步的垂直拆分和最后的水平拆分是交替进行的,并无非常清晰的边界和先手顺序。
原文作者:二进制跳动;如有侵权,请联系管理员删除。