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

典型场景

  1. 版本化部署:"用户服务:2.1""用户服务:1.4"并存
  2. 配置关联:通过部署规范绑定环境变量
  3. 依赖传递:前端构件依赖后端服务节点

三、嵌套节点:层级化部署架构

通过节点嵌套可表达云区域、可用区等层级关系,使用缩进或花括号语法:

@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

避坑指南

  1. 避免过度连接:只展示关键通信路径
  2. 命名规范:节点/构件采用[环境]-[角色]-[序号]格式(如prod-nginx-01
  3. 版本控制:建议将部署图与基础设施代码(IaC)存放在同一仓库

掌握这些节点关系表达技巧后,您的部署图将能准确反映系统真实拓扑,成为团队沟通和运维管理的有效工具。建议结合CI/CD流水线实现部署图的自动化生成,确保文档与实际情况始终保持同步。

评论已关闭