架構神器DaC之Diagram

      網友投稿 1010 2025-03-31

      一 背景

      通過圖可以用 Python 代碼繪制云系統架構。它的誕生是為了在沒有任何設計工具的情況下對一個新的系統架構設計進行原型化。您還可以描述或可視化現有的系統體系結構。圖目前支持的主要供應商包括: AWS,Azure,GCP,Kubernetes,阿里巴巴云,甲骨文云等。它還支持 On-Premise 節點、 SaaS 以及主要的編程框架和語言。

      代碼關系圖還允許您跟蹤任何版本控制系統中的體系結構關系圖更改。注意: 它不控制任何實際的云資源,也不生成云形成或地形代碼。它只是用于繪制云系統體系結構圖。

      相比于在 UI 上對各種圖標進行拖拽和調整,這種DaC(Diagram as Code)方式更符合我們程序員的使用習慣。

      二 支持范圍

      三 示例圖片

      四 安裝部署

      4.1 Python環境

      python環境版本為3.6以上,由于我本地python環境管理使用anconda,也可以使用其他工具。

      conda create -n py-diagrams python=3.6 conda activate py-diagrams

      4.2 graphviz安裝

      它使用Graphviz來呈現圖表,因此您需要安裝Graphviz來使用圖表。安裝graphviz(或已經安裝)之后,安裝這些關系圖。

      apt-get install graphviz # macos brew install graphviz

      五 使用

      5.1 編寫代碼

      # diagram.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("Grouped Workers", show=False, direction="TB"): ELB("lb") >> [EC2("worker1"), EC2("worker2"), EC2("worker3"), EC2("worker4"), EC2("worker5")] >> RDS("events")

      5.2 生成圖片

      python diagram.py

      六 邏輯簡介

      6.1 繪圖對象

      6.1.1 Diagram

      Diagram:這是表示圖的最主要的對象,代表一個架構圖

      使用 Diagram 類來創建圖環境上下文,使用 with 語法來使用這個上下文。Diagram 的第一個參數是會被用作架構圖的名稱以及輸出的圖片文件名(轉換為小寫+下劃線)。

      Diagram 支持參數:

      outformat:指定輸出圖片的類型,默認是 png,可以是 png、jpg、svg 和 pdf

      show:指定是否顯示圖片,默認是 False

      graph_attr、node_attr 和 edge_attr:指定 Graphviz 屬性選項,用來控制圖、點、線的樣式,詳情查看 參考鏈接

      6.1.2 Node

      Node:表示一個節點或系統組件,比如快速開始中的SLB、ECS和RDS都是架構圖中的節點。

      節點之間的關系使用操作符來表示,分別是:

      >>:左節點指向右節點

      <<:右節點指向左節點

      -:節點互相連接,沒有方向

      6.1.3 Cluster

      Cluster:表示集群或分組,可將多個節點放到一個集群中,它也是一個上下文管理器,使用 with 語法。

      6.2 貢獻云廠商

      需要在 resources/aws 文件夾中更新資源圖片,然后執行 ./autogen.sh 即可。./autogen.sh 會對 resources/ 做這么幾件事:

      將特定云供應商的 svg 圖片轉換為 png

      架構圖神器DaC之Diagram

      將特定云供應商的圖片調整為圓角圖片

      自動生成節點類代碼

      自動生成文檔

      使用 black 格式化自動生成的代碼

      6.3 自定義圖片

      定義圖片變量,將鏈接地址urlretrieve為icon,就可以使用。

      from urllib.request import urlretrieve from diagrams import Cluster, Diagram from diagrams.aws.database import Aurora from diagrams.custom import Custom from diagrams.k8s.compute import Pod # Download an image to be used into a Custom Node class #rabbitmq_url = "https://jpadilla.github.io/rabbitmqapp/assets/img/icon.png" rabbitmq_url = "https://img2018.cnblogs.com/blog/1538609/201907/1538609-20190720105324996-496731759.jpg" rabbitmq_icon = "rabbitmq.png" urlretrieve(rabbitmq_url, rabbitmq_icon) with Diagram("01-Broker Consumers", show=False): with Cluster("Consumers"): consumers = [ Pod("worker"), Pod("worker"), Pod("worker")] queue = Custom("Message queue", rabbitmq_icon) queue >> consumers >> Aurora("Database")

      生成圖片

      參考鏈接

      https://github.com/mingrammer/diagrams

      https://github.com/blushft/go-diagrams

      https://diagrams.mingrammer.com/docs/getting-started/installation

      https://diagrams.mingrammer.com/docs/getting-started/examples

      https://blog.csdn.net/wangbinxin001/article/details/104344692

      https://www.tonyballantyne.com/graphs.html

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:家居制造業生產管理規范(家具工廠生產管理規章制度)
      下一篇:wpssmartark這個功能嗎?(wps有smartart功能嗎)
      相關文章
      亚洲精品无码鲁网中文电影| 亚洲H在线播放在线观看H| 亚洲国产日韩在线| 亚洲精品无码午夜福利中文字幕 | 亚洲视频免费播放| 国产成人亚洲综合无码精品| 亚洲欧洲一区二区三区| 国产成人亚洲精品播放器下载| 亚洲AV成人一区二区三区观看| 亚洲色少妇熟女11p| 亚洲深深色噜噜狠狠网站| 亚洲高清视频在线| 亚洲中文字幕久久精品无码A | 亚洲熟女一区二区三区| 亚洲热妇无码AV在线播放| 亚洲国产精品VA在线看黑人| 亚洲AV无码专区在线播放中文 | 亚洲国产日韩一区高清在线| 亚洲人成在线电影| 亚洲成av人片不卡无码| 亚洲一区二区三区91| 亚洲综合一区二区三区四区五区| 亚洲一区AV无码少妇电影| 久久亚洲色WWW成人欧美| 亚洲av午夜成人片精品电影| 久久国产成人精品国产成人亚洲| 亚洲综合在线另类色区奇米| 亚洲日韩av无码| 亚洲天天在线日亚洲洲精| 亚洲精品国产肉丝袜久久| 亚洲综合久久一本伊伊区| 亚洲国产精品ⅴa在线观看| 内射无码专区久久亚洲 | 亚洲人成在线精品| 亚洲一本一道一区二区三区| 亚洲国产精品久久久久秋霞小| 亚洲国产精品国产自在在线| 亚洲色婷婷综合久久| 久久久无码精品亚洲日韩按摩| 亚洲av成人一区二区三区| 亚洲国产AV无码一区二区三区|