第80篇
极客时间《从0开始学架构》课程笔记。
可扩展的基本思想
拆。
就是将原本大一统的系统拆分成多个规模小的部分,扩展时只修改其中一部分即可,无须整个系统到处都改。
可以减少改动范围,降低改动风险。
3种拆分思路
日常生活中的『拆』是破坏性的,而软件系统的『拆』是建设性的。
- 面向流程拆分:将整个业务流程拆分为几个阶段,每个阶段作为一部分
- 面向服务拆分:将系统提供的服务拆分,每个服务作为一部分
- 面向功能拆分:将系统提供的功能拆分,每个功能作为一部分
- 范围从大到小,流程大于服务,服务大于功能
拆分举例-学生信息管理系统
-
面向流程拆分:展示层--》业务层--》数据层--》存储层
面向流程拆分 -
面向服务拆分:注册服务、登录服务、信息管理服务、安全设置服务
面向服务拆分 -
面向功能拆分:手机号注册、邮箱注册、手机号登录、邮箱登录、课程信息管理、成绩信息管理、修改密码、找回密码
面向功能拆分
可扩展方式
- 不同的拆分方式,本质上决定了系统的扩展方式
- 合理拆分可以实现在架构上强制保证在程序出错时,范围不会太广,影响不会太大
1、面向流程拆分的优势
扩展时大部分情况只需要修改某一层,少部分情况可能修改关联的两层,不会出现所有层都同时要修改
2、面向服务拆分的优势
对某个服务扩展,或者要增加新的服务时,只需要扩展相关服务即可,无须修改所有的服务
3、面向功能拆分的优势
对某个功能扩展,或者要增加新的功能时,只需要扩展相关功能即可,无须修改所有的功能模块
典型可扩展系统架构
- 面向流程拆分:分层架构
- 面向服务拆分:SOA、微服务
- 面向功能拆分:微内核架构
总结
- 拆,是核心思想
- 面向流程拆分里的流程不是业务流程,而是数据流程
- 服务是一组相似功能的集合,一个功能也可以做成独立的服务
- 每个服务是独立的子系统,有各自独立的数据库,缓存,服务器
- 架构设计时可以组合使用不同的拆分方式
网友评论