1. UML部署图的目的
一个部署图展示了系统的物理/运行时架构:
- 硬件节点(服务器、设备、云实例)
- 部署在这些节点上的软件构件
- 执行环境(容器、运行时)
- 节点之间的通信路径(协议、连接)
对于一个简单在线食品订购系统,它展示了如何:
- 客户和餐厅的Web界面是如何提供的
- 业务逻辑如何运行
- 数据如何存储
- 外部服务(支付、通知)如何集成
它帮助开发人员、DevOps团队和利益相关者理解部署拓扑、扩展点、安全边界和依赖关系。
2. 部署图中的关键UML元素
| 元素 | UML表示法(PlantUML) | 含义/使用场景 | 构造型示例 |
|---|---|---|---|
| 节点 | node “名称” | 可以托管构件的计算资源(物理或虚拟) | <<设备>>, <<云>> |
| 设备 | 节点“Name” <<设备>> | 物理或虚拟硬件(服务器、移动设备、路由器) | <<设备>>, <<服务器>> |
| 执行环境 | 节点“Name” <<执行环境>> | 软件运行时/容器(Tomcat、Node.js、Docker、JVM) | <<执行环境>>, <<容器>> |
| 工件 | 工件“filename.war” | 可部署单元(可执行文件、.jar、.js捆绑包、数据库模式、配置文件) | <<可执行文件>>, <<文件>>, <<数据库>> |
| 组件 | 组件“Name” | 逻辑软件单元(在部署图中可选;通常由工件实现) | <<Web>>, <<服务>> |
| 通信路径 | –, –>, ..> | 节点之间的网络连接(可带有协议标签) | HTTP/HTTPS、WebSocket、RMI |
| 依赖/调用 | ..>, –> | 使用/依赖(例如前端调用后端) | <<调用>>, <<访问>> |
| 表现/实现 | ..> 带有 <<实现>> 或 ..> | 工件实现/被部署为组件 | <<实现>>, <<表现>> |
| 外部系统 | 节点“Name” <<外部>> | 您无法控制的第三方服务 | <<外部>>, <<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 代码(附解释)
Plantuml
Edit Plantuml in VPasCode
@startuml
title 简单在线点餐系统 - 部署图
从左到右方向
skinparam {
箭头颜色 #424242
箭头字体颜色 #424242
默认字体大小 14
阴影效果关闭
构造型C背景颜色 #ADD1B2
构造型I背景颜色 #ADD1B2
}
' ── 节点 ────────────────────────────────────────────────
节点 "Web 服务器 / CDN" <<设备>> as WebServer {
[客户网站 HTML/JS/CSS] #..# (客户 SPA)
[餐厅管理面板 HTML/JS/CSS] #..# (餐厅 SPA)
}
节点 "云后端" <<设备>> as Cloud {
节点 "API 服务器" <<执行环境>> as APIServer {
构件 "backend-api.jar / main.exe" as BackendArtifact
}
节点 "PostgreSQL 服务器" <<执行环境>> as DBServer {
database "PostgreSQL 数据库" as Postgres <<数据库>>
}
}
节点 "支付网关" <<外部>> as Payment {
[支付 API] as PaymentAPI
}
节点 "通知服务" <<外部>> as Notification {
[WebSocket / 推送 API] as NotifyAPI
}
' ── 关系 ─────────────────────────────────────────
WebServer --> Cloud : HTTPS(API 调用)
Cloud --> Payment : HTTPS(结账)
Cloud --> Notification : WebSocket / HTTPS(状态更新)
' 构件 → 组件实现(可选但清晰)
(Customer SPA) ..> BackendArtifact : <<调用>>
(Restaurant SPA) ..> BackendArtifact : <<调用>>
BackendArtifact --> Postgres : <<JDBC / SQL>>
BackendArtifact --> PaymentAPI : <<HTTPS 调用>>
BackendArtifact --> NotifyAPI : <<WebSocket / HTTPS>>
' 可选:如需可显示数据库协议
' BackendArtifact -right-> Postgres : <<JDBC>>
note right of Cloud
典型的小型/中型部署:
• 单个虚拟机或小型集群
• API 和数据库可部署在同一台机器上(简化)
或分开部署以实现更好的扩展性
end note
@enduml 6. 逐步指南:如何构建您自己的部署图
- 列出所有执行目标(服务器、容器、外部服务)
- 列出可部署的构件(实际运行的内容:.js 包、.jar、数据库)
- 分组为节点(逻辑上嵌套时使用——例如 API + 数据库位于一个云节点中)
- 确定方向(从左到右的布局对 web → API → DB 的流程效果良好)
- 添加通信路径并标注协议
- 添加关键依赖(<<调用>>,<<访问>>)
- 应用皮肤参数用于颜色/可读性
- 添加注释用于重要决策(单实例 vs 多实例,扩展性备注)
- 验证:DevOps 工程师能否理解每个组件应部署在何处?
概要 – 简单食物订购部署快速参考
| 部分 | 典型节点类型 | 构件示例 | 通过以下方式连接 |
|---|---|---|---|
| 客户界面 | Web 服务器 / CDN <<设备>> | SPA 包(HTML/JS) | HTTPS → API |
| 餐厅仪表板 | Web 服务器 / CDN <<设备>> | 管理 SPA 包 | HTTPS → API |
| 业务逻辑 | API 服务器 <<executionEnv>> | backend-api.jar / 可执行文件 | JDBC → 数据库,HTTPS → 外部 |
| 数据存储 | PostgreSQL <<executionEnv>> | PostgreSQL 数据文件 + 模式 | — |
| 支付 | 外部 <<SaaS>> | 支付 API 端点 | HTTPS |
| 实时更新 | 外部 <<SaaS>> | WebSocket / FCM / APNs | WebSocket / HTTPS |
此结构适用于 MVP 或中小型部署(1–3 台服务器 + 云数据库 + Stripe/PayPal + Firebase/Pusher)。
当系统扩展时,可自由调整嵌套结构、协议,或添加扩展说明(例如负载均衡器、副本)。
🔗 参考列表
- 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用户指南: 关于变更对比功能的文档,使团队能够随时间跟踪和管理状态图的修订。










