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 3中实现类型检查器的简单方法
Jul 03 Python
python爬虫使用cookie登录详解
Dec 27 Python
Python内置模块logging用法实例分析
Feb 12 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
windows下python安装小白入门教程
Sep 18 Python
Django web框架使用url path name详解
Apr 29 Python
Mac安装python3的方法步骤
Aug 09 Python
python解释器spython使用及原理解析
Aug 24 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
logging level级别介绍
Feb 21 Python
Python深度学习之Pytorch初步使用
May 20 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开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
JS记录用户登录次数实现代码
2014/01/15 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
详解JavaScript的变量
2019/04/04 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
迷你西餐厅创业计划书范文
2013/12/31 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
python自动化调用百度api解决验证码
2021/04/13 Python
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python