python3使用diagrams绘制架构图的步骤

作者:陆言君 时间:2022-08-27 12:42:34 

目录
  • 技术背景

  • 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,然后会在当前目录下生成一个这样的架构图:

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中所特有的魔法函数。

来源:https://www.cnblogs.com/dechinphy/p/diagrams.html

标签:python,diagrams,架构图
0
投稿

猜你喜欢

  • python wav模块获取采样率 采样点声道量化位数(实例代码)

    2023-04-26 23:25:28
  • 浅谈pytorch中stack和cat的及to_tensor的坑

    2022-12-14 11:53:23
  • python中使用.py配置文件的方法详解

    2022-02-13 19:57:22
  • mysql主从服务器同步心得体会第1/2页

    2024-01-18 13:34:20
  • 深入理解ES6中let和闭包

    2024-05-28 15:41:25
  • Python读取txt某几列绘图的方法

    2021-07-27 06:29:52
  • Dockerfile构建一个Python Flask 镜像

    2021-11-12 10:04:01
  • 基于Python制作一键桌面整理工具

    2022-08-22 11:45:52
  • python中实现字符串翻转的方法

    2021-06-08 04:27:59
  • WEB2.0网页制作标准教程(7)CSS学习入门

    2007-12-13 13:12:00
  • Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    2024-04-16 08:52:59
  • javascript中注册和移除事件的4种方式

    2024-04-22 12:49:02
  • 当视觉设计师遇上产品经理、开发工程师…[译]

    2010-01-17 10:18:00
  • Python绘制专业的K线图 源代码解析

    2023-09-02 09:51:35
  • Mysql数据库 ALTER 操作详解

    2024-01-18 11:03:28
  • 解决MySQL去除密码登录告警的问题

    2024-01-26 12:33:21
  • 你是一个职业的页面重构工作者吗?

    2008-09-29 12:07:00
  • 将DataTable作为存储过程参数的用法实例详解

    2024-01-27 14:23:24
  • python爬取基于m3u8协议的ts文件并合并

    2021-11-03 16:44:45
  • MySQL触发器的使用场景及方法实例

    2024-01-23 04:45:12
  • asp之家 网络编程 m.aspxhome.com