部署图是什么
部署图描述运行期的物理与逻辑部署:节点(device 表示物理设备、executionEnvironment 表示容器或运行时)、节点上部署的制品、部署规格以及节点之间的通信路径。它回答的是代码跑在哪里、彼此怎么联网,而不是类怎么设计,是与运维共同评审拓扑时的主力图。
与组件图的区别
组件图回答系统由哪些可替换部件组成、依赖方向如何;部署图回答这些部件跑在哪些节点上、跨哪些网络区域。一次上线评审通常两张都要看:组件图定接口与依赖关系,部署图定实例数、可用区分布与网络放行规则。
基本信息
| 节点 | 计算资源:物理机、虚拟机、容器运行时、网络设备 |
|---|---|
| 制品 | 部署到节点上的构建产物:jar 包、容器镜像、静态资源包 |
| 通信路径 | 节点之间的网络协议与端口 |
| 部署规格 | 实例数、资源限额、副本分布等配置 |
PlantUML 片段
PlantUML 片段
node "负载均衡" <<nginx>>
node "应用节点" <<executionEnvironment>> {
artifact order.jar
}
database "主库" as db1
database "从库" as db2
负载均衡 --> 应用节点 : HTTPS # 入口流量经负载均衡转发
应用节点 --> db1 : JDBC # 应用只写主库
db1 --> db2 : 复制 # 主从复制方向要标清楚典型使用场景
- 上线评审:确认实例数、可用区分布与负载均衡配置
- 网络放行申请:把节点之间的协议与端口整理成防火墙规则清单
- 容量规划:结合节点资源与实例数估算扩容规模
- 故障演练:按图设计断网、宕机的验证范围
- 与运维对齐:把机房、可用区、负载均衡与数据库主从一并画出
画到什么程度
部署图的粒度取决于用途:做网络放行申请时,需要精确到节点之间的协议与端口;做上线评审时,重点是实例数、可用区与副本分布;做容量规划时,需要标注节点规格与资源限额。三种用途不必画在同一张图上,混在一起会让读者抓不住重点。
手工维护的部署图很快过期,建议由部署清单或基础设施即代码配置生成,让拓扑图跟着真实配置走,而不是靠记忆补画。