如何使用 Python 创建系统设计图

如何使用 Python 创建系统设计图

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

本文介绍用 Python Diagrams 库以“图即代码”方式绘制系统架构图:安装 Python、Graphviz 和 diagrams 包后,通过代码定义节点、连接数据流、分组、集群和边,并可设置标签、颜色与样式。该方法便于版本控制、节省时间,并能在 CI/CD 中自动生成图表。

🔎

延伸解读

图即代码的核心优势

文章指出,图即代码方式让架构图变更可通过版本控制追踪,避免手动绘图的时间消耗,并支持在CI/CD流水线或文档构建中自动生成图表。这意味着团队可以将图表纳入代码仓库,随代码更新而同步,减少因手动调整导致的格式不一致问题。

节点与连接的基本语法

在Python Diagrams中,节点由提供者、资源类型和名称三部分组成,例如从diagrams.aws.compute导入EC2。连接方向用>>表示从左到右,<<表示从右到左,-表示无向连接。通过变量赋值节点,可以方便地引用和连接,使代码更清晰。

列表与集群简化复杂结构

当需要将一个节点连接到多个同类节点时,可以使用Python列表,如load_balancer >> web_servers,避免重复编写连接语句。集群(Cluster)则用于将相关节点分组到带标签的框中,支持嵌套,适合表示应用层、数据库层、可用区等概念,使架构图层次分明。

边(Edge)增强连接表达

边允许为连接添加标签、颜色和样式,例如Edge(label="SQL queries", color="red", style="dashed")。这比简单的>>或<<提供了更丰富的语义,能清晰标注数据流类型或依赖关系。边同样可与<<和-结合使用,满足不同方向的标注需求。

❓

Q&A

用 Python 画系统架构图需要提前安装哪些东西?

需要 Python 3.7+、pip、操作系统上安装 Graphviz(用于渲染输出图片),以及通过 pip install diagrams 安装 Python 的 diagrams 包。

Python Diagrams 库支持哪些云服务商?

支持多种提供商,包括 Azure、GCP、AWS 等。

在 Diagrams 中如何连接节点并指定数据流方向?

使用 >> 表示从左到右的流向,<< 表示从右到左,- 表示无向连接。例如 load_balancer >> web_server、web_server << database、database - backup_server。

如何用一个节点连接多个节点,避免重复代码?

可以把多个节点放进 Python 列表,然后直接用 >> 连接列表。例如 web_servers = [EC2("web-1"), EC2("web-2"), EC2("web-3")],然后 load_balancer >> web_servers >> database。

Diagrams 中的 Cluster 有什么作用?怎么用?

Cluster 用于把相关节点分组到带标签的框里,可以表示应用层、数据库层、可用区、区域、环境、微服务组等。语法是 with Cluster("名称"):,缩进在下面的节点都属于该集群,并且支持嵌套。

如何给连接线添加标签、颜色和样式?

使用 Edge 对象,例如 app >> Edge(label="SQL queries") >> database 添加标签;Edge(label="SQL", color="red") 设置颜色;Edge(style="dashed") 设置线型,还支持 dotted、bold 等样式。

🏷️

标签

➡️

继续阅读