25.9k stars用代码绘制架构图强的很

微信公众号:[开源日记],分享10k+Start的优质开源项目

图表即代码

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

25.9k stars用代码绘制架构图强的很

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")
25.9k stars用代码绘制架构图强的很

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")
25.9k stars用代码绘制架构图强的很

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
25.9k stars用代码绘制架构图强的很

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
25.9k stars用代码绘制架构图强的很

更多功能广大网友可以继续挖掘。

微信公众号:[开源日记],分享10k+Start的优质开源项目。

     

原文始发于微信公众号(开源日记):25.9k stars用代码绘制架构图强的很

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/49797.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!