可扩展性
扩展性(Extensibility)是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。
表现在
系统基础设施稳定不需要经常变更
应用之间较少依赖和耦合
对需求变更可以敏捷响应
它是系统架构设计层面的开闭原则(对扩展开放,对修改关闭),架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。
模块化
设计网站可扩展架构的核心思想是模块化,并在此基础之上,降低模块间的耦合性,提高模块的复用性。
分层和分割是模块化设计的重要手段,利用分层和分割的方式将软件分割为若干个低耦合的、独立的组件模块,这些组件模块以消息传递及依赖调用的方式聚合成一个完整的系统。
在大型网站中,这些模块通过分布式部署的方式,独立的模块部署在独立的服务器(集群)上,从物理上分离模块之间的耦合关系,进一步降低耦合性,提高复用性。
模块分布式部署以后具体聚合方式主要有分布式消息队列和分布式服务。
低耦合
低耦合的系统更容易扩展,低耦合的模块更容易复用,一个低耦合的系统设计也会让开发过程和维护变得更加轻松和容易管理。
如何分解系统的各个模块、如何定义各个模块的接口、如何复用组合不同的模块构造成一个完整的系统,这是软件设计中最有挑战的部分。