可扩展性

What

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

Why

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

Theory

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

预测变化的复杂性

  • 不能每个设计点都考虑可扩展性
  • 不能完全不考虑可扩展性
  • 所有的预测都存在出错的可能性

How

业务维度

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

技术维度

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

可扩展的基本思想

拆,就是将原本大一统的系统拆分成多个规模小的部分,扩展时只修改其中一部分即可,无须整个系统到处都改,通过这种方式来减少改动范围,降低改动风险。

常见的拆分思路有如下三种

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

各种XX性比较

  • 可扩展性:代码完成之后,要在原来的基础上增加新功能,只需要添加添加该功能的代码,不需要或需要少量修改原来的代码,对之前的代码没有影响,这就是可扩展
  • 可维护性:指软件产品被修改的能力,修改包括纠正、改进或软件对环境、需求和功能规格说明变化的适应。代码完成之后,如果要修改部分功能,需要修改的地方很少,就是容易维护
  • 可复用性:代码完成之后,以后开发中可以复用部分代码,提高效率,就是复用性强
  • 灵活性:代码完成之后,使用的地方可以通过多种方式来调用该部分的代码,这就是灵活性好
原文地址:https://www.cnblogs.com/powercto/p/12902350.html