前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >25.9k stars用代码绘制架构图强的很

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

作者头像
开源日记
发布2023-03-10 15:10:37
3940
发布2023-03-10 15:10:37
举报
文章被收录于专栏:JVMGC

图表即代码

图表让你可以在 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
代码语言:javascript
复制
brew install graphviz
Windows安装graphviz
代码语言:javascript
复制
choco install graphviz
安装diagrams
代码语言:javascript
复制
pip install diagrams

生成一个简单的架构图

代码语言:javascript
复制
# 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.数据流
  • >>:从左到右连接节点。
  • <<:从右向左连接节点。
  • -:无方向连接节点。无方向的。
代码语言:javascript
复制
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.负载均衡
代码语言:javascript
复制
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.集群隔离
代码语言:javascript
复制
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

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

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

本文分享自 开源日记 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GitHub数据
  • 体验一下
    • macOS安装graphviz
      • Windows安装graphviz
        • 安装diagrams
          • 1.数据流
            • 2.负载均衡
              • 3.集群隔离
              相关产品与服务
              负载均衡
              负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档