什么是系统架构设计?
系统架构设计是对系统高层结构和行为的描述,包括:
- 系统的各个模块(组件)
- 模块之间的交互方式
- 数据流动、控制流动
- 技术选型与部署策略
系统架构常见的风格有:
- 分层架构(Layered Architecture)
- 微服务架构(Microservice Architecture)
- 客户端-服务器(Client-Server)
- 事件驱动架构(EDA)
- 面向服务架构(SOA)
UML在系统架构设计中的作用
UML 提供了一整套图形符号来帮助我们表达系统的不同层次结构。主要包括以下几种图:
UML图类型 | 用途 |
---|---|
用例图(Use Case Diagram) | 描述系统与用户之间的交互 |
类图(Class Diagram) | 描述系统中的类、接口及其关系 |
组件图(Component Diagram) | 描述系统中各个软件组件及其依赖 |
部署图(Deployment Diagram) | 描述系统的物理部署结构,如服务器、网络节点等 |
时序图(Sequence Diagram) | 描述对象之间按时间顺序的消息交换 |
活动图(Activity Diagram) | 描述业务流程或算法流程 |
状态图(State Diagram) | 描述对象在不同状态之间的变化 |
系统架构设计流程 + UML 图组合实践
需求分析阶段
- 主要产出:用例图
- 目标:了解系统角色、功能、边界
系统架构设计阶段
- 产出:
- 分层结构草图(可以使用类图或组件图)
- 技术选型(框架、数据库、消息队列等)
- 微服务划分图(组件图 + 部署图)
模块设计阶段
- 产出:
- 类图(定义类、继承、接口)
- 时序图(描述接口或服务之间的调用流程)
- 状态图(用于处理复杂状态机逻辑)
系统部署阶段
- 产出:
- 部署图(展示微服务部署在哪些服务器上、如何通信)
一个完整系统示例
假设我们设计一个视频监控系统,包含如下部分:
- 前端 Web 页面
- 后端服务(用户认证、录像管理、实时预览)
- 媒体服务(RTSP 转 WebRTC)
- 数据库与存储
- SRS 流媒体服务器
我们可以这样用 UML 来描述架构:
用例图
- 用户 -> 登录
- 用户 -> 预览实时视频
- 用户 -> 查询回放录像
- 管理员 -> 设备管理
组件图
- 用户服务
- 视频管理服务
- 媒体网关(转码、拉流)
- 存储模块
- SRS 服务(独立组件)
部署图
[客户端浏览器]
|
[Nginx 反向代理]
|
[后端 API 服务群] --连接--> [数据库]
|
调用
|
[媒体网关服务] --连接--> [SRS 服务]
时序图
- 用户点击播放 -> API 服务 -> 媒体网关 -> SRS 拉流 -> 返回 WebRTC 地址 -> 前端播放
总结
设计层级 | 推荐 UML 图 |
---|---|
系统级功能 | 用例图、组件图 |
逻辑结构 | 类图、时序图 |
流程控制 | 活动图、状态图 |
运维部署 | 部署图 |