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自动化工具日志查询分析脚本代码实现
Nov 26 Python
python迭代器实例简析
Sep 25 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
想学python 这5本书籍你必看!
Dec 11 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python中的逆序遍历实例
Dec 25 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 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
php 各种应用乱码问题的解决方法
2010/05/09 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
大学生水文观测实习自我鉴定
2013/09/29 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
小学教师读书活动总结
2014/07/08 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
小学六一主持词开场白
2015/05/28 职场文书
学历证明样本
2015/06/16 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
母亲节感言
2015/08/03 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
js判断两个数组相等的5种方法
2022/05/06 Javascript