可扩展性

What

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

Why

伴随着业务的发展,可以快速响应业务变化,并最大程度下降对现有系统的影响,是设计可扩展性好架构的主要目的。框架

Theory

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

预测变化的复杂性设计

  • 不能每一个设计点都考虑可扩展性
  • 不能彻底不考虑可扩展性
  • 全部的预测都存在出错的可能性

How

业务维度

  • 对业务深刻理解,对业务的发展方法进行预判

技术维度

  • 应对变化
    • 将“变化”封装在一个“变化层”,将不变的部分封装在一个独立的“稳定层”
    • 提炼出一个“抽象层”和一个“实现层”
  • 下降模块间的耦合度
    • 分布式服务框架
    • 分布式消息队列

可扩展的基本思想

拆,就是将本来大一统的系统拆分红多个规模小的部分,扩展时只修改其中一部分便可,无须整个系统处处都改,经过这种方式来减小改动范围,下降改动风险。队列

常见的拆分思路有以下三种开发

  • 面向流程拆分:将整个业务流程拆分为几个阶段,每一个阶段做为一部分。
  • 面向服务拆分:将系统提供的服务拆分,每一个服务做为一部分。
  • 面向功能拆分:将系统提供的功能拆分,每一个功能做为一部分。

各类XX性比较

  • 可扩展性:代码完成以后,要在原来的基础上增长新功能,只须要添加添加该功能的代码,不须要或须要少许修改原来的代码,对以前的代码没有影响,这就是可扩展
  • 可维护性:指软件产品被修改的能力,修改包括纠正、改进或软件对环境、需求和功能规格说明变化的适应。代码完成以后,若是要修改部分功能,须要修改的地方不多,就是容易维护
  • 可复用性:代码完成以后,之后开发中能够复用部分代码,提升效率,就是复用性强
  • 灵活性:代码完成以后,使用的地方能够经过多种方式来调用该部分的代码,这就是灵活性好
相关文章
相关标签/搜索