之前寫過技術文檔畫圖工具箱,diagrams屬于diagram as code工具派別。mac安裝brew install graphvizpip ins" />

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

使用Diagrams畫架構圖,你會嗎?

來源: 責編: 時間:2023-09-20 21:55:42 316觀看
導讀序最近發現一個畫架構圖的神器diagrams,提供了很多云廠商及開源組件的圖標,相比于C4-PlantUML顯得更專業一點。
之前寫過技術文檔畫圖工具箱,diagrams屬于diagram as code工具派別。mac安裝brew install graphvizpip ins

yoo28資訊網——每日最新資訊28at.com

最近發現一個畫架構圖的神器diagrams,提供了很多云廠商及開源組件的圖標,相比于C4-PlantUML顯得更專業一點。
之前寫過技術文檔畫圖工具箱,diagrams屬于diagram as code工具派別。
yoo28資訊網——每日最新資訊28at.com

mac安裝

brew install graphvizpip install diagramsbrew install python@3.11

示例1

from diagrams import Diagramfrom diagrams.aws.compute import EC2from diagrams.aws.database import RDSfrom diagrams.awswork import ELB# python aws_example.pywith Diagram("Grouped Workers", show=False, direction="TB"):    ELB("lb") >> [EC2("worker1"),                  EC2("worker2"),                  EC2("worker3"),                  EC2("worker4"),                  EC2("worker5")] >> RDS("events")

執行python example.py即可以在當前目錄生成png圖片。yoo28資訊網——每日最新資訊28at.com

yoo28資訊網——每日最新資訊28at.com

示例2

from diagrams import Cluster, Diagramfrom diagrams.aws.compute import ECSfrom diagrams.aws.database import ElastiCache, RDSfrom diagrams.awswork import ELBfrom diagrams.awswork import Route53with Diagram("Clustered Web Services", show=False):    dns = Route53("dns")    lb = ELB("lb")    with Cluster("Services"):        svc_group = [ECS("web1"),                     ECS("web2"),                     ECS("web3")]    with Cluster("DB Cluster"):        db_primary = RDS("userdb")        db_primary - [RDS("userdb ro")]    memcached = ElastiCache("memcached")    dns >> lb >> svc_group    svc_group >> db_primary    svc_group >> memcached

yoo28資訊網——每日最新資訊28at.com

基本語法就是import node,以with Diagram開始,之后聲明組件,然后使用with來進行分組,最后通過>>來串聯。
默認文件名是Diagram名,空格替換為下劃線,可以用filename指定。
圖片格式默認是png,可以用outformat=[“jpg”, “png”, “dot”]來指定要生成的圖片類型。
show默認為True,也就是python生成完圖片會默認打開圖片。yoo28資訊網——每日最新資訊28at.com

k8s示例

from diagrams import Cluster, Diagramfrom diagrams.k8s.compute import Pod, StatefulSetfrom diagrams.k8swork import Servicefrom diagrams.k8s.storage import PV, PVC, StorageClasswith Diagram("Stateful Architecture", show=False):    with Cluster("Apps"):        svc = Service("svc")        sts = StatefulSet("sts")        apps = []        for _ in range(3):            pod = Pod("pod")            pvc = PVC("pvc")            pod - sts - pvc            apps.append(svc >> pod >> pvc)    apps << PV("pv") << StorageClass("sc")

yoo28資訊網——每日最新資訊28at.com

開源組件示例

from diagrams import Cluster, Diagramfrom diagrams.onprem.analytics import Sparkfrom diagrams.onprem.compute import Serverfrom diagrams.onprem.database import PostgreSQLfrom diagrams.onprem.inmemory import Redisfrom diagrams.onprem.aggregator import Fluentdfrom diagrams.onprem.monitoring import Grafana, Prometheusfrom diagrams.onpremwork import Nginxfrom diagrams.onprem.queue import Kafkawith Diagram("Advanced Web Service with On-Premise", show=False):    ingress = Nginx("ingress")    metrics = Prometheus("metric")    metrics << Grafana("monitoring")    with Cluster("Service Cluster"):        grpcsvc = [            Server("grpc1"),            Server("grpc2"),            Server("grpc3")]    with Cluster("Sessions HA"):        primary = Redis("session")        primary - Redis("replica") << metrics        grpcsvc >> primary    with Cluster("Database HA"):        primary = PostgreSQL("users")        primary - PostgreSQL("replica") << metrics        grpcsvc >> primary    aggregator = Fluentd("logging")    aggregator >> Kafka("stream") >> Spark("analytics")    ingress >> grpcsvc >> aggregator

yoo28資訊網——每日最新資訊28at.com

主要結構

node

# aws resourcesfrom diagrams.aws.compute import ECS, Lambdafrom diagrams.aws.database import RDS, ElastiCachefrom diagrams.awswork import ELB, Route53, VPC...# azure resourcesfrom diagrams.azure.compute import FunctionAppsfrom diagrams.azure.storage import BlobStorage...# alibaba cloud resourcesfrom diagrams.alibabacloud.compute import ECSfrom diagrams.alibabacloud.storage import ObjectTableStore...# gcp resourcesfrom diagrams.gcp.compute import AppEngine, GKEfrom diagrams.gcp.ml import AutoML ...# k8s resourcesfrom diagrams.k8s.compute import Pod, StatefulSetfrom diagrams.k8swork import Servicefrom diagrams.k8s.storage import PV, PVC, StorageClass...# oracle resourcesfrom diagrams.oci.compute import VirtualMachine, Containerfrom diagrams.ociwork import Firewallfrom diagrams.oci.storage import FileStorage, StorageGateway

完整版見nodesyoo28資訊網——每日最新資訊28at.com

數據流及布局

  • >>表示從左到右連接
  • <<表示從右到左連接
  • -表示無方向的連接

Diagram有個屬性direction來表示整體布局,可選的值有TB, BT, LR及RL,默認是LR,即從左到右yoo28資訊網——每日最新資訊28at.com

TB: top to bottom
BT: bottom to top
LR: left to right
RL: right to left
yoo28資訊網——每日最新資訊28at.com

Cluster用于分組,也支持內嵌,比如yoo28資訊網——每日最新資訊28at.com

with Cluster("Event Flows"):        with Cluster("Event Workers"):            workers = [ECS("worker1"),                       ECS("worker2"),                       ECS("worker3")]        queue = SQS("event queue")        with Cluster("Processing"):            handlers = [Lambda("proc1"),                        Lambda("proc2"),                        Lambda("proc3")]

連接符之間可以用Edge來銜接,用于個性化處理邊的屬性,比如yoo28資訊網——每日最新資訊28at.com

metrics = Prometheus("metric")    metrics << Edge(color="firebrick", style="dashed") << Grafana("monitoring")

小結

diagrams是基于python的一款diagram as code工具,它最大的特點就是提供了很多云廠商及開源組件的圖標,畫出來的圖顯得更專業一點,也更易懂一點。yoo28資訊網——每日最新資訊28at.com

doc

  • diagrams
  • Diagrams: Diagram as Code
  • diagrams examples
  • 技術文檔畫圖工具箱

本文鏈接:http://www.www897cc.com/showinfo-26-10566-0.html使用Diagrams畫架構圖,你會嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 圖解「正向代理」的原理 + 實踐應用

下一篇: 優秀實踐:CPU核心數和線程池大小之間的關系

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經過去,最明顯的肯定就是大內存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 電視息屏休眠仍有網絡上傳 愛奇藝被質疑“薅消費者羊毛”

    記者丨寧曉敏 見習生丨汗青出品丨鰲頭財經(theSankei) 前不久,愛奇藝發布了一份亮眼的一季報,不僅營收和會員營收創造歷史最佳表現,其運營利潤也連續6個月實現增長。自去年年初
  • 消息稱小米汽車開始篩選交付中心:需至少120個車位

    IT之家 7 月 7 日消息,日前,有微博簡介為“汽車行業從業者、長三角一體化擁護者”的微博用戶 @長三角行健者 發文表示,據經銷商集團反饋,小米汽車目前
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 華為Mate 60保護殼曝光:碩大后置相機模組 凸起程度有驚喜

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 页游| 石景山区| 平和县| 麻江县| 宜丰县| 双峰县| 贵州省| 勐海县| 资溪县| 石楼县| 东海县| 马边| 甘洛县| 滦平县| 浮山县| 肥乡县| 边坝县| 博爱县| 潞城市| 鹰潭市| 肃南| 营山县| 平南县| 旺苍县| 周宁县| 云和县| 手机| 岢岚县| 敦煌市| 苏尼特左旗| 林芝县| 黑水县| 迁安市| 霍山县| 咸宁市| 甘肃省| 滁州市| 华安县| 密云县| 建瓯市| 司法|