技术背景
对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些xmind那种思维逻辑图一样,不仅可以帮我们看到组件之间的联系和层级,还能够展示出组件的全貌。虽然我们也可以用visio或者edraw等专业绘图工具来绘制架构图,但是对于工程师而言,用代码来直接绘制架构图,会显得更加的优雅。这里我们介绍的diagrams
,就是一个可以用来绘制架构图的python包。
diagrams的安装
与其他python库一样的,diagrams也可以通过pip来进行安装和管理,这里为了更快的安装,我们使用了腾讯的镜像源来加速:
1
2
3
4
5
6
7
8
9
10
|
[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来绘制一个最简单的逻辑关系图,从负载均衡到服务器节点,再到具体的数据库:
1
2
3
4
5
6
7
8
9
|
# 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等来画图的话,我们还可以直接对图片进行切割,操作起来会更加方便。
组件簇的定义
同样来自于中的示例,我们不仅可以定义单一的组件,还可以将概念中可以组成一个模块的多个组件组成一个耦合簇,在架构图中展现:
1
2
3
4
5
6
7
8
9
10
11
12
|
# 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中所特有的魔法函数。
以上就是python3使用diagrams生成架构图的步骤的详细内容,更多关于python 用diagrams生成架构图的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/dechinphy/p/diagrams.html