内容纲要
如何避免在扩展时需要大范围改动的问题,是软件架构可扩展性设计的关键点。
核心思想

拆即将系统按照一定的规则拆分成多个部分。这样,扩展时只需修改一部分,可以做到尽量不影响其它部分,通过这种方式来减少改动范围,降低改动风险。
常见拆分思路
不同的拆分方式决定系统的扩展方式。
面向流程拆分(分层架构)
- 原理:将整个业务(数据)流程拆分为几个阶段,每个阶段作为一部分
- 例子:学生信息管理系统
- 展示层
- 负责用户页面设计:登录页面、注册页面、图表展示页面等页面
- 业务层
- 负责具体业务逻辑处理:登录、注册、信息管理等业务
- 数据层
- 负责完成数据访问:数据库增删改查、事件日志记录等
- 存储层
- 负责数据存储:关系型数据库(MySQL)、缓存系统(Memcache)等
- 展示层



面向服务拆分(SOA、微服务)
- 原理:将系统提供的服务拆分,每个服务作为一部分
- 例子:学生信息管理系统
- 注册服务
- 登录服务
- ……



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


