专栏首页python深度学习python3使用diagrams生成架构图

python3使用diagrams生成架构图

技术背景

对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些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中所特有的魔法函数。

原文链接:https://www.cnblogs.com/dechinphy/p/diagrams.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python3使用diagrams生成架构图

    对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些Xmind那种思维逻辑图一样,不仅可以帮我们看到组...

    DechinPhy
  • 如何画好软件架构图?为什么说我们需要软件架构图?

    我们尝试通过创建架构图(作为技术文档的一部分)来反映应用程序的内部状态,但大多数时候我们都没能做对。由此产生的架构图可能非常全面,也可能非常模糊。有时,架构图根...

    一个会写诗的程序员
  • 浅谈UML的概念和模型之UML九种图

    http://blog.csdn.net/jiuqiyuliang/article/details/8552956

    bear_fish
  • 一种学习过滤拓扑空间简洁表示的域无关方法(CS)

    持久性图被广泛用于量化数据可视化中过滤拓扑空间的底层特征。在许多应用中,计算图表之间的距离是必要的;然而,计算这些距离一直是一个挑战,因为计算成本。在本文中,我...

    用户8440711
  • 吹弹牛皮之Unity OOAD与UML

    1].面向对象: (Object-Orientation,简称OO)是一种系统建模技术。

    用户7698595
  • ADD-Lib:决策实践图(CS AI)

    在本文中,我们介绍了ADD-Lib,这是我们高效且易于使用的代数决策图(ADD)框架。ADD-Lib的重点不是其有效地实现其他已建立的ADD框架所采用的单个操作...

    arxiv.org翻译专栏
  • 前端绘图:js-sequence-diagrams安装及入门

    1.js-sequence-diagrams的作用 将简单的文本行绘制成手绘风(或是简单的直线条)的流程图。优点是不需要复杂的数据结构。 ---- 这次做一个数...

    kalifa_lau
  • 超强工具集——GitHub 热点速览 Vol.47

    本周 GitHub 趋势榜精彩至极,先是 JetBrains 开源的图像渲染引擎 Skia 有了 Java 封装,一开源便获得 500+ star,再是支持开发...

    HelloGitHub
  • 韦恩图工具大测评(论一篇推送的终极努力目标)

    所谓生信菜鸟团公众号推送气质,我的定义是:对于初学者非常适用,内容是日常高频需求,本身没有特别深奥的技术,但是需要仔细的整理和总结。

    生信菜鸟团

扫码关注云+社区

领取腾讯云代金券