01 什么是系统扩展性?
系统的扩展性一般有两层含义,一是业务的扩展性,二是容量的扩展性。
业务的扩展性(extensibility)是指系统在应对需求变化和增加时提供的⼀种能⼒,简而言之就是,功能增加的时候程序能够不改或少改。例如Java中常说的“Write Once, Run Anywhere”,对于MVC(模型-视图-控制器)来说就是“View变化,Model和Controller不变”。
容量的扩展性也叫伸缩性(scalability),是指系统能够通过调整资源来适应业务的需求,比如系统的存储资源能够在数据量暴涨的情况下,通过分库分表来扩展存储能力。
扩展性设计,是为了支撑业务快速发展而出现的概念,目的是保证在企业发展的不同时期,在业务复杂度相近的情况下,业务上线所需要的研发时间不会大幅增加,甚至是基本不变的。本质上,所谓扩展性设计,就是在面向业务的不确定性做设计。
02 为什么扩展性重要?
扩展性是我们衡量系统架构的核心指标,它之所以重要是因为它有以下优点:
-
需求响应快:良好的扩展性能够赋予业务快速发展、创新和试错的能⼒;
-
研发效率高:良好的扩展性避免了重复建设,沉淀了业务经验,提升了研发效率;