微信公众号:[开源日记],分享10k+Start的优质开源项目。
图表即代码
图表让你可以在 Python 代码中绘制云系统架构。它的诞生是为了在没有任何设计工具的情况下对新的系统架构设计进行原型设计。你还可以描述或可视化现有系统架构。Diagrams 目前支持主要的主要云供应商,包括:AWS, Azure, GCP, Kubernetes, Alibaba Cloud,Oracle Cloud等……它还支持On-Premise节点,SaaS以及主要的Programming框架和语言。

GitHub数据
-
25.9k stars -
349 watching -
1.6k forks
开源地址:https://github.com/mingrammer/diagrams
体验一下
需要Python 3.6或更高版本,要使用[Graphviz]来呈现图表
macOS安装graphviz
brew install graphviz
Windows安装graphviz
choco install graphviz
安装diagrams
pip install 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")

1.数据流
-
>>:从左到右连接节点。 -
<<:从右向左连接节点。 -
-:无方向连接节点。无方向的。
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
from diagrams.aws.storage import S3
with Diagram("Web Services", show=False):
ELB("lb") >> EC2("web") >> RDS("userdb") >> S3("store")
ELB("lb") >> EC2("web") >> RDS("userdb") << EC2("stat")
(ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb")

2.负载均衡
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Workers", show=False, direction="TB"):
lb = ELB("lb")
db = RDS("events")
lb >> EC2("worker1") >> db
lb >> EC2("worker2") >> db
lb >> EC2("worker3") >> db
lb >> EC2("worker4") >> db
lb >> EC2("worker5") >> db

3.集群隔离
from diagrams import Cluster, Diagram, Node, Edge
from diagrams.k8s.compute import Pod
from diagrams.k8s.network import Ing
from diagrams.gcp.network import LoadBalancing
from diagrams.onprem.network import Nginx
with Diagram("Cluster nesting", show=False):
gcp_lb = LoadBalancing("GCP LB")
with Cluster("Kubernetes"):
with Cluster("Nginx"):
nginx= Nginx("")
with Cluster("MyApp"):
myapp_ing = Ing("")
with Cluster("Pods"):
myapp_pods = Pod("myapp")
with Cluster("MySQL"):
myapp_db = Pod("myapp-db")
gcp_lb >> Edge(headport="c", tailport="c", minlen="1", lhead='cluster_Kubernetes') >> nginx
nginx >> Edge(headport="c", tailport="c", minlen="1", lhead='cluster_MyApp') >> myapp_ing >> Edge(headport="c", tailport="c", minlen="1", lhead='cluster_MyApp pods') >> myapp_pods >> myapp_db

更多功能广大网友可以继续挖掘。
微信公众号:[开源日记],分享10k+Start的优质开源项目。
原文始发于微信公众号(开源日记):25.9k stars用代码绘制架构图强的很
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/49797.html