zoukankan      html  css  js  c++  java
  • 可扩展性

    What

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

    Why

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

    Theory

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

    预测变化的复杂性

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

    How

    业务维度

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

    技术维度

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

    可扩展的基本思想

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

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

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

    各种XX性比较

    • 可扩展性:代码完成之后,要在原来的基础上增加新功能,只需要添加添加该功能的代码,不需要或需要少量修改原来的代码,对之前的代码没有影响,这就是可扩展
    • 可维护性:指软件产品被修改的能力,修改包括纠正、改进或软件对环境、需求和功能规格说明变化的适应。代码完成之后,如果要修改部分功能,需要修改的地方很少,就是容易维护
    • 可复用性:代码完成之后,以后开发中可以复用部分代码,提高效率,就是复用性强
    • 灵活性:代码完成之后,使用的地方可以通过多种方式来调用该部分的代码,这就是灵活性好
  • 相关阅读:
    IE9发布会,有想去的联系我,有赠票(3月21日,周一)
    HTML5时代的浏览器全面测试
    CTO门的windows 7 要不要买?是不是正版?
    约束与索引
    Linux关机命令详解
    CSS XSLT
    xml xslt中的空格输出处理
    Jmeter笔记(15)随机取 用户定义的变量
    $.getJSON不执行的原因
    更改eclipse中java和jsp文件字体的大小
  • 原文地址:https://www.cnblogs.com/powercto/p/12902350.html
Copyright © 2011-2022 走看看