本文为您详细解析系统架构的五大经典架构分类和模式及其应用场景。
🏗️ 五大经典软件架构模式
1. 分层架构 - 最经典的架构模式
分层架构是最常见的软件架构,也是事实上的标准架构。它将软件分成若干个水平层,每一层都有清晰的角色和分工。
典型的四层结构:
- 表现层:用户界面,负责视觉和用户互动
- 业务层:实现业务逻辑
- 持久层:提供数据,SQL语句就放在这一层
- 数据库层:保存数据
核心特点: 层与层之间通过接口进行通信,用户请求必须依次通过这四层的处理,不能跳过其中任何一层。
2. 事件驱动架构 - 解耦神器
事件驱动架构通过事件进行通信,当状态发生变化时软件发出通知。
四个核心组件:
- 事件队列:接收事件的入口
- 分发器:将不同的事件分发到不同的业务逻辑单元
- 事件通道:分发器与处理器之间的联系渠道
- 事件处理器:实现业务逻辑,处理完成后会发出事件,触发下一步操作
适用场景: 简单项目中,事件队列、分发器和事件通道可以合为一体,整个软件就分成事件代理和事件处理器两部分。
3. 微核架构 - 插件式设计
微核架构又称为插件架构,软件的内核相对较小,主要功能和业务逻辑都通过插件实现。
设计原则:
- 内核通常只包含系统运行的最小功能
- 插件相互独立,避免出现互相依赖的问题
- 插件之间的通信应该减少到最低
典型应用: Eclipse IDE、Visual Studio Code等开发工具都采用了这种架构模式。
4. 微服务架构 - SOA的升级版
微服务架构是服务导向架构(SOA)的升级。每一个服务就是一个独立的部署单元,这些单元都是分布式的,互相解耦。
三种实现模式:
- RESTful API模式:服务通过API提供,云服务就属于这一类
- RESTful应用模式:服务通过传统的网络协议或者应用协议提供,常见于企业内部
- 集中消息模式:采用消息代理实现消息队列、负载均衡、统一日志和异常处理
注意事项: 集中消息模式的缺点是会出现单点失败,消息代理可能要做成集群。
- 云架构 - 最容易扩展的架构
云架构主要解决扩展性和并发的问题,是最容易扩展的架构。
核心思想: 将数据都复制到内存中,变成可复制的内存数据单元,然后将业务处理能力封装成一个个处理单元。访问量增加就新建处理单元,访问量减少就关闭处理单元。
两个主要部分:
-
处理单元(Processing Unit) :实现业务逻辑
-
虚拟中间件(Virtualized Middleware) :负责通信、保持会话控制、数据复制、分布式处理和处理单元的部署
🎯 四种系统架构建模方法
根据建模侧重点的不同,软件架构的模型分成4种:
1. 结构模型
最直观、最普遍的建模方法。以架构的构件、连接件和其他概念来刻画结构,通过结构来反映系统的重要语义内容。
2. 框架模型
与结构模型类似,但更侧重整体的结构。主要以一些特殊的问题为目标建立只针对和适应问题的结构。
3. 动态模型
对结构或框架模型的补充,主要研究系统的"大颗粒"行为的性质。例如,描述系统的重新配置或演化。
4. 过程模型
研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。
📊 经典"4+1"视角模型
Philippe Kruchten在1995年提出的"4+1"视角模型,从5个不同的视角来描述软件架构:
- 逻辑视角:关注系统的功能性需求
- 过程视角:关注系统的非功能性需求
- 物理视角:关注系统的部署
- 开发视角:关注系统的开发组织
- 场景视角:通过用例来验证架构