《从 0 开始学架构》学习归整(十五)可扩展架构的基本思想和模式

内容纲要

如何避免扩展时需要大范围改动的问题,是软件架构可扩展性设计的关键点。

核心思想

拆

即将系统按照一定的规则拆分成多个部分。这样,扩展时只需修改一部分,可以做到尽量不影响其它部分,通过这种方式来减少改动范围,降低改动风险。

常见拆分思路

不同的拆分方式决定系统的扩展方式。

面向流程拆分(分层架构)

  • 原理:将整个业务(数据)流程拆分为几个阶段,每个阶段作为一部分
  • 例子:学生信息管理系统
    • 展示层
      • 负责用户页面设计:登录页面、注册页面、图表展示页面等页面
    • 业务层
      • 负责具体业务逻辑处理:登录、注册、信息管理等业务
    • 数据层
      • 负责完成数据访问:数据库增删改查、事件日志记录等
    • 存储层
      • 负责数据存储:关系型数据库(MySQL)、缓存系统(Memcache)等

流程

面向服务拆分(SOA、微服务)

  • 原理:将系统提供的服务拆分,每个服务作为一部分
  • 例子:学生信息管理系统
    • 注册服务
    • 登录服务
    • ……

服务

面向功能拆分(微内核)

  • 原理:将系统提供的功能拆分,每个功能作为一部分
  • 例子:学生信息管理系统
    • 注册服务
      • 手机注册
      • 邮箱注册
      • ……
    • 登录服务
      • 手机登录
      • 邮箱登录
      • ……
    • 信息管理服务
      • 基本信息
      • 课程信息
      • ……
    • ……

功能

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注