关于架构的思考之三:系统复杂度的来源(可扩展性、低成本、安全和规模)

目录

可扩展性

定义:

how:

预测变化的复杂性源头:

在准确预测变化的前提下,如何应对?

两个主要的复杂性相关的问题

1 系统需要拆分出变化层和稳定层

2. 需要设计变化层和稳定层之间的接口

低成本

安全

1. 功能安全

2. 架构安全

规模

1. 功能越来越多,导致系统复杂度指数级上升

2. 数据越来越多,系统复杂度发生质变



可扩展性

定义:

可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改就可以支持,无须整个系统重构或者重建。

 

how:

设计具备良好可扩展性的系统,有两个基本条件:正确预测变化、完美封装变化。

 

预测变化的复杂性源头:

1.不能每个设计点都考虑可扩展性。

2.不能完全不考虑可扩展性。

所有的预测都存在出错的可能性。把握预测的程度和提升预测结果的准确性,是一件很复杂的事情,而且没有通用的标准可以简单套上去,更多是靠自己的经验、直觉,没有明确标准,不同的人理解和判断有偏差,而最终又只能选择一个判断。

 

在准确预测变化的前提下,如何应对?

一般分为两种形式:

1:变化层--》稳定层    例如,如果系统需要支持 XML、JSON、ProtocolBuffer 三种接入方式

2. 稳定层--》变化层   例如,如果系统需要支持 MySQL、Oracle、DB2 数据库存储

具体需要根据具体业务情况来设计。不变的是将“变化”封装在一个“变化层”,将不变的部分封装在一个独立的“稳定层”  。

 

两个主要的复杂性相关的问题

因此,出现两个主要的复杂性相关的问题:

1 系统需要拆分出变化层和稳定层

对于哪些属于变化层,哪些属于稳定层,很多时候并不是像前面的示例(不同接口协议或者不同数据库)那样明确,不同的人有不同的理解,导致架构设计评审的时候可能吵翻天。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值