技術背景
對于一個架構師或者任何一個軟件工程師而言,繪制架構圖都是一個比較值得學習的技能。這就像我們學習的時候整理的一些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