av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

使用Diagrams畫(huà)架構(gòu)圖,你會(huì)嗎?

最近發(fā)現(xiàn)一個(gè)畫(huà)架構(gòu)圖的神器diagrams,提供了很多云廠(chǎng)商及開(kāi)源組件的圖標(biāo),相比于C4-PlantUML顯得更專(zhuān)業(yè)一點(diǎn)。
之前寫(xiě)過(guò)技術(shù)文檔畫(huà)圖工具箱,diagrams屬于diagram as code工具派別。

創(chuàng)新互聯(lián)長(zhǎng)期為1000+客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為長(zhǎng)白企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),長(zhǎng)白網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

mac安裝

brew install graphviz
pip install diagrams
brew install [email protected]

示例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")

執(zhí)行python example.py即可以在當(dāng)前目錄生成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

基本語(yǔ)法就是import node,以with Diagram開(kāi)始,之后聲明組件,然后使用with來(lái)進(jìn)行分組,最后通過(guò)>>來(lái)串聯(lián)。
默認(rèn)文件名是Diagram名,空格替換為下劃線(xiàn),可以用filename指定。
圖片格式默認(rèn)是png,可以用outformat=[“jpg”, “png”, “dot”]來(lái)指定要生成的圖片類(lèi)型。
show默認(rèn)為T(mén)rue,也就是python生成完圖片會(huì)默認(rèn)打開(kāi)圖片。

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

開(kāi)源組件示例

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

主要結(jié)構(gòu)

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

完整版見(jiàn)nodes

數(shù)據(jù)流及布局

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

Diagram有個(gè)屬性direction來(lái)表示整體布局,可選的值有TB, BT, LR及RL,默認(rèn)是LR,即從左到右

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

Cluster用于分組,也支持內(nèi)嵌,比如

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來(lái)銜接,用于個(gè)性化處理邊的屬性,比如

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

小結(jié)

diagrams是基于python的一款diagram as code工具,它最大的特點(diǎn)就是提供了很多云廠(chǎng)商及開(kāi)源組件的圖標(biāo),畫(huà)出來(lái)的圖顯得更專(zhuān)業(yè)一點(diǎn),也更易懂一點(diǎn)。

doc

  • diagrams
  • Diagrams: Diagram as Code
  • diagrams examples
  • 技術(shù)文檔畫(huà)圖工具箱

標(biāo)題名稱(chēng):使用Diagrams畫(huà)架構(gòu)圖,你會(huì)嗎?
當(dāng)前URL:http://uogjgqi.cn/article/dppoiec.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流