1. UML部署图的目的
一个部署图展示了系统的物理/运行时架构:
- 硬件节点(服务器、设备、云实例)
- 部署在这些节点上的软件构件
- 执行环境(容器、运行时)
- 节点之间的通信路径(协议、连接)
对于一个简单在线食品订购系统,它展示了如何:
- 客户和餐厅的Web界面是如何提供的
- 业务逻辑如何运行
- 数据如何存储
- 外部服务(支付、通知)如何集成
它帮助开发人员、DevOps团队和利益相关者理解部署拓扑、扩展点、安全边界和依赖关系。
2. 部署图中的关键UML元素
| 元素 | UML表示法(PlantUML) | 含义/使用场景 | 构造型示例 |
|---|---|---|---|
| 节点 | node “名称” | 可托管构件的计算资源(物理或虚拟) | <<设备>>, <<云>> |
| 设备 | 节点“名称” <<设备>> | 物理或虚拟硬件(服务器、移动设备、路由器) | <<设备>>, <<服务器>> |
| 执行环境 | 节点“名称” <<执行环境>> | 软件运行时/容器(Tomcat、Node.js、Docker、JVM) | <<执行环境>>, <<容器>> |
| 工件 | 工件“filename.war” | 可部署单元(可执行文件、.jar、.js捆绑包、数据库模式、配置文件) | <<可执行文件>>, <<文件>>, <<数据库>> |
| 组件 | 组件“名称” | 逻辑软件单元(在部署图中可选;通常由工件实现) | <<Web>>, <<服务>> |
| 通信路径 | –, –>, ..> | 节点之间的网络连接(可带有协议标签) | HTTP/HTTPS、WebSocket、RMI |
| 依赖/调用 | ..>, –> | 使用/依赖(例如:前端调用后端) | <<调用>>, <<访问>> |
| 表现/实现 | ..> 带有 <<实现>> 或 ..> | 工件实现/被部署为组件 | <<实现>>, <<表现>> |
| 外部系统 | 节点“名称” <<外部>> | 您无法控制的第三方服务 | <<外部>>, <<SaaS>> |
3. 部署图的最佳实践(尤其适用于网络系统)
- 保持简洁且易于阅读简单且可读 — 避免过于拥挤;每个主要环境(开发/预发布/生产,可选)使用一张图
- 使用有意义的节点分组(将节点嵌套在节点内)以显示集群/云区域
- 优先使用简洁的表示法 — 仅在相关时显示文件名/配置;跳过冗余的构造型
- 清晰地显示边界 — 内部云与外部服务之间的界限
- 在路径上标注协议(HTTP/HTTPS、WebSocket、TCP等)
- 使用从左到右的方向用于网络系统(客户端 → 服务器 → 数据库的流向感觉更自然)
- 区分设备(硬件)与运行环境(运行时)
- 仅在有实际价值时展示实现关系(仅当有实际价值时,例如构件 → 组件)
- 使用皮肤参数在 PlantUML 中以获得更好的颜色/可读性
- 适用于小型/中型系统:最多 4–8 个节点
4. 简单在线点餐系统的推荐架构
此系统的简洁现代布局:
- 客户端 → 浏览器(隐式)与Web 服务器/CDN
- Web 服务器/CDN托管客户网站和餐厅面板的静态资源及 SPA 资产
- API 服务器(执行环境)运行后端逻辑
- 数据库服务器托管 PostgreSQL
- 外部支付与通知服务
典型节点:
- Web 服务器 / CDN <<设备>>
- API 服务器 <<执行环境>>
- 数据库服务器 <<执行环境>>
- 支付网关 <<外部>>
- 通知服务 <<外部>>
5. 由 Visual Paradigm AI 聊天机器人生成的图表

优化并清理后的 PlantUML 代码(附解释)
@startuml
title 简单在线点餐系统 – 部署图
从左到右方向
skinparam {
箭头颜色 #424242
箭头字体颜色 #424242
默认字体大小 14
阴影 false
构造型C背景颜色 #ADD1B2
构造型I背景颜色 #ADD1B2
}
‘ ── 节点 ────────────────────────────────────────────────
节点 “Web 服务器 / CDN” <<设备>> 作为 WebServer {
[客户网站 HTML/JS/CSS] #..# (客户 SPA)
[餐厅管理面板 HTML/JS/CSS] #..# (餐厅 SPA)
}
节点 “云后端” <<设备>> 作为 Cloud {
节点 “API 服务器” <<执行环境>> 作为 APIServer {
构件 “backend-api.jar / main.exe” 作为 BackendArtifact
}
节点 “PostgreSQL 服务器” <<执行环境>> 作为 DBServer {
数据库 “PostgreSQL 数据库” 作为 Postgres <<数据库>>
}
}
节点 “支付网关” <<外部>> 作为 Payment {
[支付 API] 作为 PaymentAPI
}
节点 “通知服务” <<外部>> 作为 Notification {
[WebSocket / 推送 API] 作为 NotifyAPI
}
‘ ── 关系 ─────────────────────────────────────────
WebServer –> Cloud : HTTPS (API 调用)
Cloud –> Payment : HTTPS (结账)
Cloud –> Notification : WebSocket / HTTPS (状态更新)
‘ 构件 → 组件实现 (可选但清晰)
(客户 SPA) ..> BackendArtifact : <<调用>>
(餐厅SPA) ..> 后端构件 : <<调用>>
后端构件 –> Postgres : <<JDBC / SQL>>
后端构件 –> 支付API : <<HTTPS调用>>
后端构件 –> 通知API : <<WebSocket / HTTPS>>
‘ 可选:如果你想,可以在数据库上显示协议
‘ 后端构件 -右-> Postgres : <<JDBC>>
note right of Cloud
典型的小型/中型部署:
• 单个虚拟机或小型集群
• API + 数据库可以部署在同一台机器上(为简化起见)
或分开部署以实现更好的扩展性
end note
@enduml
6. 逐步指南:如何构建您自己的部署图
- 列出所有执行目标(服务器、容器、外部服务)
- 列出可部署构件(实际运行的内容:.js包、.jar、数据库)
- 分组为节点(在逻辑上嵌套——例如,API + 数据库在同一个云节点中)
- 确定方向(从左到右对 web → API → DB 非常有效)
- 添加通信路径并添加协议标签
- 添加关键依赖(<<调用>>,<<访问>>)
- 应用皮肤参数用于颜色/可读性
- 添加注释用于重要决策(单实例与多实例,扩展性备注)
- 验证: DevOps工程师能否理解每个组件应部署在何处?
概要 – 简单食品订购部署快速参考
| 部分 | 典型节点类型 | 构件示例 | 通过以下方式连接 |
|---|---|---|---|
| 客户界面 | Web服务器/CDN <<设备>> | SPA捆绑包(HTML/JS) | HTTPS → API |
| 餐厅仪表板 | Web服务器/CDN <<设备>> | 管理SPA捆绑包 | HTTPS → API |
| 业务逻辑 | API服务器 <<执行环境>> | backend-api.jar / 可执行文件 | JDBC → 数据库,HTTPS → 外部 |
| 数据存储 | PostgreSQL <<执行环境>> | PostgreSQL数据文件 + 模式 | — |
| 支付 | 外部 <<SaaS>> | 支付API端点 | HTTPS |
| 实时更新 | 外部 <<SaaS>> | WebSocket / FCM / APNs | WebSocket / HTTPS |
这种结构对于MVP或中小型部署(1–3台服务器 + 云数据库 + Stripe/PayPal + Firebase/Pusher)是现实可行的。
当系统扩展时,可自由调整嵌套结构、协议,或添加扩展说明(例如负载均衡器、副本等)。
🔗 参考列表(Markdown 格式)
- AI 图表生成器 – Visual Paradigm: 官方发布说明,详细介绍了 Visual Paradigm AI 图表生成器的发布情况和功能,包括用于状态图的文本转UML功能。
- 使用AI在几秒钟内创建UML状态图 – Visual Paradigm: 逐步指南,演示如何使用AI从纯文本生成UML状态图,并附有实际案例和应用场景。
- 什么是状态机图? – Visual Paradigm: 基础文章,解释UML状态机图的目的、结构和最佳实践。
- 使用 Visual Paradigm AI 掌握状态图 – Cybermedian: 实用指南,展示AI增强的状态图在实际系统(如自动收费系统)中的应用。
- 全面评测:Visual Paradigm 的 AI 图表生成功能: 对AI图表生成器的准确性、易用性以及与开发工作流程集成情况的详细评估。
- AI 聊天机器人 – Visual Paradigm: AI助手的概览,可实现UML图表(包括状态图)的对话式编辑。
- OpenDocs 更新:AI 状态图生成器 – Visual Paradigm: 宣布增强的文档集成功能,支持将状态图嵌入并同步到技术文档中。
- Visual Paradigm AI 状态图教程 – YouTube: 视频教程,演示如何使用AI图表生成器为电子商务订单流程创建状态图。
- 关于状态图 – Visual Paradigm: UML状态图的全面概述,包括其组成部分、语法及实际应用场景。
- 创建状态图 – Visual Paradigm 用户指南: 详细的分步说明,用于构建状态图,包括复合状态和守卫条件。
- 高级状态机功能 – Visual Paradigm: 深入探讨使用 Visual Paradigm 的高级建模技术,包括嵌套状态、正交区域和事件处理。
- 与之前版本对比 – Visual Paradigm 用户指南: 关于变更对比功能的文档,使团队能够随时间追踪和管理状态图的修订。










