当前位置:首页 > 科技  > 软件

使用Diagrams画架构图,你会吗?

来源: 责编: 时间:2023-09-20 21:55:42 424观看
导读序最近发现一个画架构图的神器diagrams,提供了很多云厂商及开源组件的图标,相比于C4-PlantUML显得更专业一点。
之前写过技术文档画图工具箱,diagrams属于diagram as code工具派别。mac安装brew install graphvizpip ins

UdO28资讯网——每日最新资讯28at.com

最近发现一个画架构图的神器diagrams,提供了很多云厂商及开源组件的图标,相比于C4-PlantUML显得更专业一点。
之前写过技术文档画图工具箱,diagrams属于diagram as code工具派别。
UdO28资讯网——每日最新资讯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图片。UdO28资讯网——每日最新资讯28at.com

UdO28资讯网——每日最新资讯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

UdO28资讯网——每日最新资讯28at.com

基本语法就是import node,以with Diagram开始,之后声明组件,然后使用with来进行分组,最后通过>>来串联。
默认文件名是Diagram名,空格替换为下划线,可以用filename指定。
图片格式默认是png,可以用outformat=[“jpg”, “png”, “dot”]来指定要生成的图片类型。
show默认为True,也就是python生成完图片会默认打开图片。UdO28资讯网——每日最新资讯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")

UdO28资讯网——每日最新资讯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

UdO28资讯网——每日最新资讯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

完整版见nodesUdO28资讯网——每日最新资讯28at.com

数据流及布局

  • >>表示从左到右连接
  • <<表示从右到左连接
  • -表示无方向的连接

Diagram有个属性direction来表示整体布局,可选的值有TB, BT, LR及RL,默认是LR,即从左到右UdO28资讯网——每日最新资讯28at.com

TB: top to bottom
BT: bottom to top
LR: left to right
RL: right to left
UdO28资讯网——每日最新资讯28at.com

Cluster用于分组,也支持内嵌,比如UdO28资讯网——每日最新资讯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来衔接,用于个性化处理边的属性,比如UdO28资讯网——每日最新资讯28at.com

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

小结

diagrams是基于python的一款diagram as code工具,它最大的特点就是提供了很多云厂商及开源组件的图标,画出来的图显得更专业一点,也更易懂一点。UdO28资讯网——每日最新资讯28at.com

doc

  • diagrams
  • Diagrams: Diagram as Code
  • diagrams examples
  • 技术文档画图工具箱

本文链接:http://www.28at.com/showinfo-26-10566-0.html使用Diagrams画架构图,你会吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 图解「正向代理」的原理 + 实践应用

下一篇: 优秀实践:CPU核心数和线程池大小之间的关系

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 雅柏威士忌多款单品价格大跌,泥煤顶流也不香了?

    来源 | 烈酒商业观察编 | 肖海林今年以来,威士忌市场开始出现了降温迹象,越来越多不断暴涨的网红威士忌也开始悄然回归市场理性。近日,LVMH集团旗下苏格兰威士忌品牌雅柏(Ardbeg
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
Top