知识卡片
三种拆分方式对应的典型架构,及可组合使用
内容
[[可扩展的基本思想是”拆”,及三种拆分思路的范围关系]]里的流程/服务/功能三种拆分思路,各自带来不同的扩展优势,对应不同的典型架构。面向流程拆分时,扩展一个功能通常只需要改动其中一层、少数情况下改动相邻两层,不会所有层都跟着一起动——比如学生信息管理系统按”展示层→业务层→数据层→存储层”拆分后,要把存储层从只支持MySQL扩展到同时支持MySQL和Oracle,只需要改存储层和数据层,展示层和业务层完全不受影响;这种拆分方式对应的典型架构是分层架构。面向服务拆分时,扩展或新增某个服务,只需要动相关服务,其他服务不受影响——同样以学生管理系统为例,注册服务里要加”学号注册”功能,只需要改”注册服务”和”登录服务”,”信息管理服务”和”安全设置服务”完全不用动;这种拆分方式对应SOA和微服务架构。面向功能拆分时,扩展或新增某个功能,只需要动相关功能模块——比如新增”学号注册”功能,只需要新增一个功能模块、再改一下”登录功能”模块,其他功能模块都不受影响;这种拆分方式对应微内核架构。这三种拆分方式和对应的架构并不是互斥的单选题,而是可以在同一个系统里组合叠加使用——比如学生管理系统整体可以采用面向服务拆分的微服务架构,拆成注册服务、登录服务、信息管理服务、安全服务四个独立运行的子系统;其中”注册服务”这个子系统内部又可以进一步采用面向流程拆分的分层架构;”登录服务”这个子系统内部则可以采用面向功能拆分的微内核架构——不同粒度的拆分思路可以嵌套组合,按各自子系统的具体需求灵活选用。
结构图:
flowchart TB
A["三种拆分方式的扩展优势与对应架构"]
A --> B["面向流程拆分<br/>扩展通常只改一层,少数情况改相邻两层<br/>→分层架构"]
A --> C["面向服务拆分<br/>扩展/新增服务只影响相关服务<br/>→SOA、微服务"]
A --> D["面向功能拆分<br/>扩展/新增功能只影响相关功能模块<br/>→微内核架构"]
B --> E["三者可组合嵌套使用<br/>如:整体微服务(面向服务)<br/>+注册服务内部用分层架构(面向流程)<br/>+登录服务内部用微内核(面向功能)"]
C --> E
D --> E
参考来源
- 位置:《从零开始学架构》第32讲《可扩展架构的基本思想和模式》"可扩展方式"(源文件:_epub-src/OEBPS/text00002.html)
- 结论依据:原文说明"面向流程拆分:分层架构。面向服务拆分:SOA、微服务。面向功能拆分:微内核架构",并给出学生管理系统"整体系统采用面向服务拆分中的'微服务'架构……'注册服务'子系统本身又是采用面向流程拆分的分层架构……'登录服务'子系统采用的是面向功能拆分的'微内核'架构"的组合案例,直接支撑本卡片结论与结构图。
- 原始内容:面向流程拆分:分层架构。面向服务拆分:SOA、微服务。面向功能拆分:微内核架构……这几个系统架构并不是非此即彼的,而是可以在系统架构设计中进行组合使用的。