python3使用diagrams绘制架构图的步骤


Posted in Python onApril 08, 2021

技术背景

对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些Xmind那种思维逻辑图一样,不仅可以帮我们看到组件之间的联系和层级,还能够展示出组件的全貌。虽然我们也可以用Visio或者Edraw等专业绘图工具来绘制架构图,但是对于工程师而言,用代码来直接绘制架构图,会显得更加的优雅。这里我们介绍的diagrams,就是一个可以用来绘制架构图的python包。

diagrams的安装

与其他python库一样的,diagrams也可以通过pip来进行安装和管理,这里为了更快的安装,我们使用了腾讯的镜像源来加速:

[dechin@dechin-manjaro diagrams]$ python3 -m pip install diagrams -i https://mirrors.cloud.tencent.com/pypi/simple 
Looking in indexes: https://mirrors.cloud.tencent.com/pypi/simple
Collecting diagrams
  Downloading https://mirrors.cloud.tencent.com/pypi/packages/d6/4e/d4725222ac080375954d63d3c90243fdaa219fe085327d42b9dc68c71293/diagrams-0.19.1-py3-none-any.whl (19.2 MB)
     |????????????????????????????????| 19.2 MB 6.7 MB/s 
Requirement already satisfied: graphviz<0.17.0,>=0.13.2 in /home/dechin/anaconda3/lib/python3.8/site-packages (from diagrams) (0.16)
Requirement already satisfied: jinja2<3.0,>=2.10 in /home/dechin/anaconda3/lib/python3.8/site-packages (from diagrams) (2.11.2)
Requirement already satisfied: MarkupSafe>=0.23 in /home/dechin/anaconda3/lib/python3.8/site-packages (from jinja2<3.0,>=2.10->diagrams) (1.1.1)
Installing collected packages: diagrams
Successfully installed diagrams-0.19.1

基础逻辑关系图

首先我们用diagrams来绘制一个最简单的逻辑关系图,从负载均衡到服务器节点,再到具体的数据库:

# example1.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") # 箭头关系

在这个案例中我们使用了AWS提供的一些基础架构组件的标签,并且可以指定各个组件模块的名称。上述代码可以直接执行:python3 example1.py,然后会在当前目录下生成一个这样的架构图:

python3使用diagrams绘制架构图的步骤

整体感觉还是比较精美的,只是如果使用专业工具如Visio等来画图的话,我们还可以直接对图片进行切割,操作起来会更加方便。

组件簇的定义

同样来自于官方文档中的示例,我们不仅可以定义单一的组件,还可以将概念中可以组成一个模块的多个组件组成一个耦合簇,在架构图中展现:

# example2.py

from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service Cluster", show=False):
    with Cluster("DB Cluster"):
        db_master = RDS("master")
        db_master - [RDS("slave1"), RDS("slave2")] # 直线连接
    ELB("lb") >> EC2("web") >> db_master

运行方式也是通过python3 example2.py,同样的会在当前目录下生成一个这样的图像文件:

python3使用diagrams绘制架构图的步骤

我们可以看到刚才定义的几个数据库组件,被统一的收纳到了一个数据库的耦合簇中。

总结概要

本文中通过python库diagrams展示了基础的架构图绘制的方法,库中提供了常用的AWS和k8S等场景下常用的组件标签,使得我们用python代码也可以绘制精美清晰的架构图。这里组件之间的连接和耦合关系,也可以通过简单的符号进行实现,这也得益于python中所特有的魔法函数。

以上就是python3使用diagrams生成架构图的步骤的详细内容,更多关于python 用diagrams生成架构图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 Python
Python导入txt数据到mysql的方法
Apr 08 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
numpy返回array中元素的index方法
Jun 27 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Python基于scipy实现信号滤波功能
May 08 Python
pytorch使用Variable实现线性回归
May 21 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python 实现分组求和与分组累加求和代码
May 18 Python
Python中zip函数如何使用
Jun 04 Python
python基础之while循环语句的使用
Apr 20 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
python实现求纯色彩图像的边框
python爬取企查查企业信息之selenium自动模拟登录企查查
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 #Python
Django 如何实现文件上传下载
Apr 08 #Python
python3 删除所有自定义变量的操作
Apr 08 #Python
pytorch显存一直变大的解决方案
Apr 08 #Python
Python文件的操作示例的详细讲解
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python优先队列实现方法示例
2017/09/21 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
五一服装活动方案
2014/01/11 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
市场营销毕业求职信
2014/08/07 职场文书
暑期培训班策划方案
2014/08/26 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL