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

开发 架构
想知道如何用Python代码绘制出云系统架构图,那么,今天猿妹要和大家分享的这个开源项目你一定喜欢——diagrams。

[[408290]]

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

 

 

责任编辑:武晓燕 来源: 开源最前线
相关推荐

2021-09-08 11:02:32

Java代码图片

2010-04-21 09:49:26

Windows Pho

2020-07-07 07:30:33

技术IT架构

2021-12-02 09:31:22

Python 代码进度条

2020-04-17 14:48:30

代码机器学习Python

2015-06-29 09:51:45

支付宝

2020-06-15 08:54:46

架构图 EA业务建模

2019-11-06 11:01:57

Python人脸识别代码

2021-11-22 10:38:23

架构运维技术

2011-08-19 11:34:05

iOS架构图

2013-09-13 15:29:55

iPad销售展示工具电子产品宣传册

2013-10-12 15:27:56

华为路由器华为

2012-03-27 11:49:41

vmwareCloud Found

2021-08-13 07:23:15

架构秒杀系统

2014-08-08 09:03:19

IT性能管理

2024-03-26 09:16:12

网络架构图AWS

2023-09-19 08:28:32

DiagramsPython工具

2020-04-10 12:12:13

InnoDB存储架构

2014-07-07 13:59:47

蓝宝石

2022-06-17 10:52:01

数据存储采集
点赞
收藏

51CTO技术栈公众号