共计 1857 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 想知道如何用 Python 代码绘制出云系统架构图,那么,今天猿妹要和大家分享的这个开源项目你一定喜欢——diagrams。 |
想知道如何用 Python 代码绘制出云系统架构图,那么,今天猿妹要和大家分享的这个开源项目你一定喜欢——diagrams。
diagrams 是一个不需要使用任何的设计工具,只需要几行代码就能做出一张惊艳的云系统架构图的工具,它的诞生就是为了在没有任何设计工具的情况下对新的系统架构设计进行原型设计,你可以用它来描述或者可视化现有的系统架构,diagrams 目前支持 AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud 等。同时,它还支持内置的架构图组件、SaaS 和主流的编程框架和语言。Diagram as Code 还允许用户跟踪任何版本控制系统中的架构图更改。
除此之外,如果你熟悉 Go,你可以使用 go-diagrams。(项目地址:https://github.com/blushft/go-diagrams)
目前,diagrams 已经在 Github 上标星 14.5K,累计分支 795 个 (Github 地址:https://github.com/mingrammer/diagrams)
安装要求
diagrams 支持 Python 3.6 及以上版本,它是使用 Graphviz 来渲染图表,因此您需要安装 Graphviz 才能使用,首先确保这两项符合要求之后,才可以安装 diagrams。macOS 用户可以通过以下方式下载 Graphviz:
# using pip (pip3)
$ pip install diagrams
# using pipenv
$ pipenv install diagrams
# using poetry
$ poetry add diagrams
快速开始
# diagram.py
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Web Service", show=False):
ELB("lb") >> EC2("web") >> RDS("userdb")
此代码生成下图:
$ python diagram.py
它将保存 web_service.png 在你的工作目录中。
AWS 上的分组工作人员
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Grouped Workers", show=False, direction="TB"):
ELB("lb") >> [EC2("worker1"),
EC2("worker2"),
EC2("worker3"),
EC2("worker4"),
EC2("worker5")] >> RDS("events")
集群网络服务
from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import ElastiCache, RDS
from diagrams.aws.network import ELB
from diagrams.aws.network import Route53
with Diagram("Clustered Web Services", show=False):
dns = Route53("dns")
lb = ELB("lb")
with Cluster("Services"):
svc_group = [ECS("web1"),
ECS("web2"),
ECS("web3")]
with Cluster("DB Cluster"):
db_main = RDS("userdb")
db_main - [RDS("userdb ro")]
memcached = ElastiCache("memcached")
dns >> lb >> svc_group
svc_group >> db_main
svc_group >> memcached
正文完
星哥玩云-微信公众号