首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >别再手动画架构图了!Python一行代码自动生成

别再手动画架构图了!Python一行代码自动生成

作者头像
用户11081884
发布2026-07-20 19:46:40
发布2026-07-20 19:46:40
480
举报

你是不是也有这样的困扰?

每次要画系统架构图,都得打开Visio或者Draw.io,一个个拖组件、画连线,折腾半天。

好不容易画完了,架构一改又得重来。

说实话,我之前也是这样。

直到我发现了一个神器——Python的diagrams库,从此告别手动画图。


这个库有多好用?

简单来说,就是用代码生成架构图。

你只需要几行Python代码,就能生成专业的云服务架构图。

不用再手动拖拽组件,不用再调整布局,代码写完,图就出来了。

就像写文档一样自然。

代码就是最好的架构文档。


怎么开始?

先安装两个东西:Python和GraphViz。

安装命令:

代码语言:javascript
复制
# macOS / Linux
sudo apt-get install graphviz        # Ubuntu/Debian
brew install graphviz                # macOS

# Windows → 下载 MSI:https://graphviz.org/download/
pip install -U diagrams graphviz

验证是否安装成功:

代码语言:javascript
复制
dot -V
>>> dot - graphviz version 8.1.0 (20230707.0739)

核心概念速览

diagrams库有几个核心概念,一学就会:

概念

说明

代码示例

Diagram

整张图画布

with Diagram(...)

Node

组件节点

EC2("web")

Cluster

逻辑分组

with Cluster("DMZ"):

Edge

连接线

>> 或 -

Custom

自定义图标

Custom("CDN", "./cdn.png")

不用记,用多了就熟了。


来个实战例子

咱们画一个微服务架构图,包含API网关、用户服务和订单服务。

代码是这样的:

代码语言:javascript
复制
from diagrams import Diagram, Cluster
from diagrams.aws.compute import ECS
from diagrams.aws.network import APIGateway, ELB
from diagrams.aws.database import RDS, ElastiCache
from diagrams.aws.storage import S3
from diagrams.aws.security import WAF

with Diagram("Microservice Architecture", show=True, direction="LR", filename="micro"):
    waf = WAF("WAF")
    api = APIGateway("API Gateway")

    with Cluster("User Service"):
        user_lb = ELB("User-LB")
        user_ecs = ECS("User-API")
        user_db = RDS("User-DB")
        user_cache = ElastiCache("Redis")
        user_lb >> user_ecs >> user_cache
        user_ecs >> user_db

    with Cluster("Order Service"):
        order_lb = ELB("Order-LB")
        order_ecs = ECS("Order-API")
        order_db = RDS("Order-DB")
        order_lb >> order_ecs >> order_db

    storage = S3("Static/Avatar")
    user_ecs >> storage
    order_ecs >> storage
    waf >> api >> user_lb
    waf >> api >> order_lb

运行一下:

代码语言:javascript
复制
python 00_microservice.py
# 生成 micro.png(高清,4000×1800)

你看,就这么简单。

一个包含WAF、API网关、两个微服务集群(各自有负载均衡、服务实例、数据库、缓存)以及共享存储的架构图就生成了。


还有这些玩法

事件驱动架构

用EventBridge、SQS和Lambda组合,画一个事件驱动的架构:

代码语言:javascript
复制
from diagrams import Diagram
from diagrams.aws.compute import Lambda
from diagrams.aws.database import DynamoDB
from diagrams.aws.integration import SQS, Eventbridge

with Diagram("Event-Driven", show=True, direction="TB"):
    bus = Eventbridge("EventBridge")
    queue = SQS("Order Queue")
    producer = Lambda("Producer")
    consumer = Lambda("Consumer")
    db = DynamoDB("Order DB")

    producer >> bus >> queue >> consumer >> db
    db << producer  # 双向连接

混合云架构

AWS、GCP、Azure三家云服务放在一起:

代码语言:javascript
复制
from diagrams import Diagram, Cluster, Edge
from diagrams.aws.compute import EC2
from diagrams.gcp.compute import ComputeEngine
from diagrams.azure.compute import VirtualMachines
from diagrams.onprem.network import Internet

with Diagram("Hybrid-Cloud", show=True):
    inet = Internet("Internet")

    with Cluster("AWS"):
        aws_vpc = EC2("EC2-VPC")
    with Cluster("GCP"):
        gcp_vpc = ComputeEngine("GCE-VPC")
    with Cluster("Azure"):
        az_vpc = VirtualMachines("VM-VNet")

    inet >> [aws_vpc, gcp_vpc, az_vpc]
    aws_vpc - Edge(label="IPSec VPN") - gcp_vpc
    gcp_vpc - Edge(label="专线") - az_vpc

Serverless架构

API Gateway + Cognito + Lambda + DynamoDB:

代码语言:javascript
复制
from diagrams import Diagram
from diagrams.aws.compute import Lambda
from diagrams.aws.database import DynamoDB
from diagrams.aws.network import APIGateway
from diagrams.aws.security import Cognito

with Diagram("Serverless Backend", show=True):
    api = APIGateway("API")
    auth = Cognito("Auth")
    func = Lambda("Lambda")
    db = DynamoDB("DynamoDB")

    api >> auth >> func >> db

还有CI/CD流水线、自定义图标、多层架构等等,玩法太多写不完。


实用小技巧

给你几个我常用的技巧:

保持简洁:别在一张图里塞太多东西,太乱了就拆成多张。

逻辑分组:用Cluster把相关的组件包在一起,一眼就能看懂。

一致方向:统一从左到右或者从上到下,别一会儿横一会儿竖。

版本控制:图表代码和项目代码放一起,用Git管理,改架构有历史记录。

自动化生成:把图表生成集成到CI/CD流程里,每次发布自动更新文档。


写在最后

说实话,我为什么这么喜欢diagrams这个库?

因为它解决了一个痛点:架构文档和代码不同步。

传统的架构图是静态的,代码改了,图忘了改,文档就过期了。

用diagrams,架构图就是代码。

代码更新了,重新运行一下,架构图就自动更新了。

架构文档永远和代码保持同步。

这就是我说的:代码就是最好的架构文档


💬 你平时怎么画架构图?用的什么工具?评论区聊聊~

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这个库有多好用?
  • 怎么开始?
  • 核心概念速览
  • 来个实战例子
  • 还有这些玩法
    • 事件驱动架构
    • 混合云架构
    • Serverless架构
  • 实用小技巧
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档