python3使用diagrams繪制架構圖的步驟

技術背景

對於一個架構師或者任何一個軟件工程師而言,繪制架構圖都是一個比較值得學習的技能。這就像我們學習的時候整理的一些Xmind那種思維邏輯圖一樣,不僅可以幫我們看到組件之間的聯系和層級,還能夠展示出組件的全貌。雖然我們也可以用Visio或者Edraw等專業繪圖工具來繪制架構圖,但是對於工程師而言,用代碼來直接繪制架構圖,會顯得更加的優雅。這裡我們介紹的diagrams,就是一個可以用來繪制架構圖的python包。

diagrams的安裝

與其他python庫一樣的,diagrams也可以通過pip來進行安裝和管理,這裡為瞭更快的安裝,我們使用瞭騰訊的鏡像源來加速:

[[email protected] 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中所特有的魔法函數。

以上就是python3使用diagrams生成架構圖的步驟的詳細內容,更多關於python 用diagrams生成架構圖的資料請關註WalkonNet其它相關文章!