成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 開發工具
Diagrams是基于Python的一款Diagram as Code工具,它最大的特點就是提供了很多云廠商及開源組件的圖標,畫出來的圖顯得更專業一點,也更易懂一點。

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

mac安裝

brew install graphviz
pip install diagrams
brew install python@3.11

示例1

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

# python aws_example.py
with 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圖片。

示例2

from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import ElastiCache, RDS
from diagrams.aws.network import ELB
from diagrams.aws.network import Route53

with 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

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

k8s示例

from diagrams import Cluster, Diagram
from diagrams.k8s.compute import Pod, StatefulSet
from diagrams.k8s.network import Service
from diagrams.k8s.storage import PV, PVC, StorageClass

with 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")

開源組件示例

from diagrams import Cluster, Diagram
from diagrams.onprem.analytics import Spark
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.aggregator import Fluentd
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka

with 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

主要結構

node

# aws resources
from diagrams.aws.compute import ECS, Lambda
from diagrams.aws.database import RDS, ElastiCache
from diagrams.aws.network import ELB, Route53, VPC
...

# azure resources
from diagrams.azure.compute import FunctionApps
from diagrams.azure.storage import BlobStorage
...

# alibaba cloud resources
from diagrams.alibabacloud.compute import ECS
from diagrams.alibabacloud.storage import ObjectTableStore
...

# gcp resources
from diagrams.gcp.compute import AppEngine, GKE
from diagrams.gcp.ml import AutoML 
...

# k8s resources
from diagrams.k8s.compute import Pod, StatefulSet
from diagrams.k8s.network import Service
from diagrams.k8s.storage import PV, PVC, StorageClass
...

# oracle resources
from diagrams.oci.compute import VirtualMachine, Container
from diagrams.oci.network import Firewall
from diagrams.oci.storage import FileStorage, StorageGateway

完整版見nodes

數據流及布局

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

Diagram有個屬性direction來表示整體布局,可選的值有TB, BT, LR及RL,默認是LR,即從左到右

TB: top to bottom
BT: bottom to top
LR: left to right
RL: right to left

Cluster用于分組,也支持內嵌,比如

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來銜接,用于個性化處理邊的屬性,比如

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

小結

diagrams是基于python的一款diagram as code工具,它最大的特點就是提供了很多云廠商及開源組件的圖標,畫出來的圖顯得更專業一點,也更易懂一點。

doc

  • diagrams
  • Diagrams: Diagram as Code
  • diagrams examples
  • 技術文檔畫圖工具箱
責任編輯:姜華 來源: 今日頭條
相關推薦

2020-06-22 08:23:42

阿里技術架構圖

2025-04-25 10:00:00

2020-06-15 08:54:46

架構圖 EA業務建模

2021-06-30 10:43:35

云系統架構代碼

2020-09-04 09:55:25

TikTok程序禁令

2023-07-10 08:36:21

工具pptword

2021-05-14 07:20:07

.NetSwagger使用

2021-08-19 15:36:09

數據備份存儲備份策略

2011-08-19 11:34:05

iOS架構圖

2021-04-14 06:53:52

C# 修飾符 Public

2021-04-16 15:02:11

CAP理論分布式

2021-09-12 17:25:12

SQLite數據庫

2024-02-22 08:31:26

數據恢復工具MySQL回滾SQL

2022-04-19 07:51:11

RPC 通信架構

2012-06-20 10:47:25

Team Leader

2019-05-07 15:49:27

AI人工智能藝術

2020-07-07 07:30:33

技術IT架構

2021-08-13 07:23:15

架構秒殺系統

2010-07-13 10:40:30

唐駿

2010-04-21 09:49:26

Windows Pho
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久一区二区三区 | 日韩精品一区二区三区免费视频 | 91一区二区 | 日韩高清一区 | 在线观看视频91 | 国产精品中文字幕在线 | 亚洲精品68久久久一区 | 91久久电影| 日韩精品二区 | 三级av免费 | 99国产精品久久久久 | 亚洲 欧美 在线 一区 | 亚洲综合在线播放 | 久久人爽 | 精品av| 精品国产一区二区三区在线观看 | 亚洲网站在线观看 | 日日摸夜夜添夜夜添精品视频 | h视频在线免费 | 视频在线一区二区 | 国产精品视频一区二区三区不卡 | 久久精彩 | 成人毛片在线视频 | 自拍偷拍小视频 | 一区二区国产精品 | 一区二区三区影院 | 91久久精品一区二区二区 | 日韩免费看视频 | 久久精品成人 | 久久51| 毛片在线免费播放 | 免费观看黄色片视频 | 综合国产 | 国精久久 | 精品欧美 | dy天堂| 亚洲国产成人精品女人久久久 | 91精品国产777在线观看 | 精品久久久一区 | 在线日韩中文字幕 | 国产乱码久久久久久 |