PlantUML部署图进阶:节点关系与连接详解
PlantUML部署图进阶:节点关系与连接详解
部署图是系统架构设计中表达物理拓扑的关键工具,而节点间的连接关系则是部署图的灵魂。本文将深入解析PlantUML中三种核心节点关系:通信路径、依赖关系和嵌套结构,帮助您构建专业级部署模型。
一、通信路径:物理连接的精确表达
通信路径(Communication Path)表示节点之间的物理连接方式,如网络链路或系统总线。在PlantUML中使用双横线--
表示,可添加标签说明连接类型:
@startuml
node "应用服务器" as app
node "数据库服务器" as db
app -- db : "千兆以太网"
@enduml
实践建议:
- 对关键路径添加带宽、协议等注释(如
"10Gbps光纤"
) - 使用不同线型区分网络类型(虚线表示VPN等虚拟连接)
- 重要路径可用颜色高亮(
app --[#red] db
)
二、部署依赖:构件与节点的绑定关系
deploy
关键字用于表示构件(Artifact)到节点的部署依赖关系,这是部署图特有的关键语义:
@startuml
node "Docker主机" {
artifact "订单服务:1.2" as ordersvc
}
ordersvc -[hidden]-> ordersvc
deploy ordersvc
@enduml
典型场景:
- 版本化部署:
"用户服务:2.1"
与"用户服务:1.4"
并存 - 配置关联:通过部署规范绑定环境变量
- 依赖传递:前端构件依赖后端服务节点
三、嵌套节点:层级化部署架构
通过节点嵌套可表达云区域、可用区等层级关系,使用缩进或花括号语法:
@startuml
node "AWS云" {
node "可用区A" {
node "EC2实例" as ec2a
node "RDS实例" as rdsa
}
node "可用区B" {
node "EC2实例" as ec2b
}
}
@enduml
层级设计技巧:
- 云服务商图标:
node "<&aws> EC2实例"
- 混合嵌套:物理机内部运行Docker容器
- 跨层级连接:可用区之间用虚线表示专线连接
综合案例:电商系统部署图
@startuml
node "<&aws> 北京区域" {
node "可用区1" as az1 {
artifact "商品服务" as product
node "ECS集群" as ecs {
artifact "订单服务" as order
}
}
node "可用区2" as az2 {
node "<&aws-rds> MySQL" as rds
}
}
az1 -- az2 : "VPC Peering"
order ..> rds : JDBC
deploy order
deploy product
cloud "CDN" {
node "边缘节点" as edge
}
edge -- az1 : "HTTPS"
@enduml
避坑指南
- 避免过度连接:只展示关键通信路径
- 命名规范:节点/构件采用
[环境]-[角色]-[序号]
格式(如prod-nginx-01
) - 版本控制:建议将部署图与基础设施代码(IaC)存放在同一仓库
掌握这些节点关系表达技巧后,您的部署图将能准确反映系统真实拓扑,成为团队沟通和运维管理的有效工具。建议结合CI/CD流水线实现部署图的自动化生成,确保文档与实际情况始终保持同步。
评论已关闭