软件系统的可扩展

软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构。相比之下,软件系统就完全相反,如果一个软件系统开发出来后,再也没有任何更新和调整,反而说明了这套软件系统没有发展、没有生命力。真正有生命力的软件系统,都是在不断迭代和发展的,典型的如 Windows 操作系统。

扩展的基本思想—拆

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

合理的拆分,能够强制保证即使程序员出错,出错的范围也不会太广,影响也不会太大

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

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

从范围上来看,从大到小依次为:流程 > 服务 > 功能,以 TCP/IP 协议栈为例:

  • 流程
    对应 TCP/IP 四层模型,因为 TCP/IP 网络通信流程是:应用层 → 传输层 → 网络层 → 物理 + 数据链路层,不管最上层的应用层是什么,这个流程都不会变。
  • 服务
    对应应用层的 HTTP、FTP、SMTP 等服务,HTTP 提供 Web 服务,FTP 提供文件服务,SMTP 提供邮件服务,以此类推。
  • 功能
    每个服务都会提供相应的功能。例如,HTTP 服务提供 GET、POST 功能,FTP 提供上传下载功能,SMTP 提供邮件发送和收取功能。

以一个简单的学生信息管理系统为例,拆分方式是:

面向流程拆分

展示层 → 业务层 → 数据层 → 存储层

各层含义是:

  • 展示层:负责用户页面设计,不同业务有不同的页面。例如,登录页面、注册页面、信息管理页面、安全设置页面等;
  • 业务层:负责具体业务逻辑的处理。例如,登录、注册、信息管理、修改密码等业务;
  • 数据层:负责完成数据访问。例如,增删改查数据库中的数据、记录事件到日志文件等;
  • 存储层:负责数据的存储。例如,关系型数据库 MySQL、缓存系统 Memcache 等;

面向服务拆分

将系统拆分为注册、登录、信息管理、安全设置等服务

面向功能拆分

每个服务都可以拆分为更多细粒度的功能,例如:

  • 注册服务:提供多种方式进行注册,包括手机号注册、身份证注册、学生邮箱注册三个功能;
  • 登录服务:包括手机号登录、身份证登录、邮箱登录三个功能;
  • 信息管理服务:包括基本信息管理、课程信息管理、成绩信息管理等功能;
  • 安全设置服务:包括修改密码、安全手机、找回密码等功能;

通过学生信息管理系统的例子可以发现,不同的拆分方式,系统的架构图差异很大。但好像无论哪种方式,最终都是可以实现的。既然如此,我们为何要头疼去选择呢,随便挑选一个不可以吗?

当然不能随便挑,否则设计就没有意义了,原因在于:不同的拆分方式,本质上决定了系统的扩展方式

扩展方式

下面是不同拆分方式应对扩展时的优势:

  1. 面向流程拆分
    扩展时大部分情况只需要修改某一层,少部分情况可能修改关联的两层,不会出现所有层都同时要修改。例如学生信息管理系统,如果我们将存储层从 MySQL 扩展为同时支持 MySQL 和 Oracle,那么只需要扩展存储层和数据层即可,展示层和业务层无须变动。

  2. 面向服务拆分
    对某个服务扩展,或者要增加新的服务时,只需要扩展相关服务即可,无须修改所有的服务。

  3. 面向功能拆分
    对某个功能扩展,或者要增加新的功能时,只需要扩展相关功能即可,无须修改所有的服务。

不同的拆分方式,将得到不同的系统架构,典型的可扩展系统架构有:

  • 面向流程拆分:分层架构;
  • 面向服务拆分:SOA、微服务;
  • 面向功能拆分:微内核架构;

这几个系统架构并不是非此即彼的,而是可以在系统设计中进行组合使用的。

--------来源《极客课程》∙ 学习摘要

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值