高端大气的云系统架构图,几行代码就能搞定

架构 2023-07-05 17:29:38
71阅读

想知道如何用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:

 
  1. # using pip (pip3) 
  2. $ pip install diagrams 
  3.  
  4. # using pipenv 
  5. $ pipenv install diagrams 
  6.  
  7. # using poetry 
  8. $ poetry add diagrams 

快速开始

 
  1. # diagram.py 
  2. from diagrams import Diagram 
  3. from diagrams.aws.compute import EC2 
  4. from diagrams.aws.database import RDS 
  5. from diagrams.aws.network import ELB 
  6.  
  7. with Diagram("Web Service", show=False): 
  8.     ELB("lb") >> EC2("web") >> RDS("userdb"

此代码生成下图:

 
  1. $ python diagram.py 

它将保存web_service.png在你的工作目录中。

AWS 上的分组工作人员

 
  1. from diagrams import Diagram 
  2. from diagrams.aws.compute import EC2 
  3. from diagrams.aws.database import RDS 
  4. from diagrams.aws.network import ELB 
  5.  
  6. with Diagram("Grouped Workers", show=False, direction="TB"): 
  7.     ELB("lb") >> [EC2("worker1"), 
  8.                   EC2("worker2"), 
  9.                   EC2("worker3"), 
  10.                   EC2("worker4"), 
  11.                   EC2("worker5")] >> RDS("events"

集群网络服务

 
  1. from diagrams import Cluster, Diagram 
  2. from diagrams.aws.compute import ECS 
  3. from diagrams.aws.database import ElastiCache, RDS 
  4. from diagrams.aws.network import ELB 
  5. from diagrams.aws.network import Route53 
  6.  
  7. with Diagram("Clustered Web Services", show=False): 
  8.     dns = Route53("dns"
  9.     lb = ELB("lb"
  10.  
  11.     with Cluster("Services"): 
  12.         svc_group = [ECS("web1"), 
  13.                      ECS("web2"), 
  14.                      ECS("web3")] 
  15.  
  16.     with Cluster("DB Cluster"): 
  17.         db_main = RDS("userdb"
  18.         db_main - [RDS("userdb ro")] 
  19.  
  20.     memcached = ElastiCache("memcached"
  21.  
  22.     dns >> lb >> svc_group 
  23.     svc_group >> db_main 
  24.     svc_group >> memcached 

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。