python3使用diagrams绘制架构图的步骤
技术背景
对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些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
,然后会在当前目录下生成一个这样的架构图:
整体感觉还是比较精美的,只是如果使用专业工具如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
,同样的会在当前目录下生成一个这样的图像文件:
我们可以看到刚才定义的几个数据库组件,被统一的收纳到了一个数据库的耦合簇中。
总结概要
本文中通过python库diagrams展示了基础的架构图绘制的方法,库中提供了常用的AWS和k8S等场景下常用的组件标签,使得我们用python代码也可以绘制精美清晰的架构图。这里组件之间的连接和耦合关系,也可以通过简单的符号进行实现,这也得益于python中所特有的魔法函数。
(资源库 www.zyku.net)
原文链接:https://www.cnblogs.com/dechinphy/p/diagrams.html
您可能感兴趣的文章
- 04-08python3 删除所有自定义变量的操作
- 09-07Python2与Python3关于字符串编码处理的差别总结
- 03-17javascript 动态生成css代码的两种方
- 06-15Windows Server 2016 禁止系统自动更
- 03-14红米note10设置返回键教程
- 07-05Linux enable命令
- 01-12兼职虎-兼职虎应用软件功能介绍
- 10-28微博炸毁评论怎么弄
- 01-115GWiFi神器-5GWiFi神器应用软件功能介
- 09-16红米note9取消提示音方法汇总
- 01-11小学英语同步作文-小学英语同步作文应
- 04-24华为nova8关闭精品推荐功能方法
- 01-29红米note9pro应用锁开启方法
- 01-11小鱼专注训练-小鱼专注训练应用软件功
- 08-14realme真我GT大师版红包助手在哪里
- 08-14华为手机自定义app图标步骤分享
- 06-22JS转换成数字类型Number()
- 03-19小米手机关闭来电LED闪烁教程
- 01-19嗨视-嗨视应用软件功能介绍
- 10-08苹果13promax怎样启用5G
最近更新
阅读排行
猜你喜欢
- 09-20腾讯地图怎么设置使用杨幂语音导航
- 02-27帝国CMS前台投稿支持用户自定义TAG的
- 01-19奥云影视-奥云影视应用软件功能介绍
- 01-12动感相册-动感相册应用软件功能介绍
- 03-16详解几种Linux 查询外网出口IP命令的
- 09-19荣耀magic3如何启用5g
- 10-01realmegtneo2在哪里更换视频铃声
- 04-22oppoReno7同步账号数据教程
- 12-07华为p50pro如何设置自动开关机
- 07-14FTP与SFTP的区别 知多少