Diagrams是一个基于Python绘制云系统架构的模块。它可以通过非常简单的描述来可视化架构。支持以下6种云产品的图标使用:AWS、Azure、GCP、Kubernetes、阿里云、OracleCloud,基于Diagrams提供的节点。你只需要指定一个云产品(其实你选择哪个并不重要,我们只需要那个产品对应的图标,你可以选择你觉得好看的),使用它内置的云产品图标可以简单的根据某个云产品图标画出架构图。例如,下面的代码绘制了一个简单的基于数据库集群的网络服务架构:WebServicewithDBCluster",show=False):dns=Route53("dns")web=ECS("service")withCluster("DBCluster"):db_master=RDS("master")db_master-[RDS("slave1"),RDS("slave2")]dns>>web>>db_master很适合毕业论文架构图强烈推荐。2.基本使用和示例2.1初始化和导出使用Diagram类初始化一个绘图上下文,该类接收的第一个参数是架构图的文件名,一旦代码运行完毕,将使用该文件name保存(空格会被下划线代替):fromdiagramsimportDiagramfromdiagrams.aws.computeimportEC2withDiagram("SimpleDiagram"):EC2("web")另外还可以选择导出的文件格式,在Diagram类添加outformat参数,也可以不用第一个参数保存文件名,只需要添加filename参数指定名称即可:withDiagram("SimpleDiagram",outformat="jpg",filename="my_diagram")2.2节点类型由于节点的类型很多,我们无法一一展示。所有类型的节点都可以在官方文档中找到,比如:阿里云:https://diagrams.mingrammer.com/docs/nodes/alibabacloudK8S:https://diagrams.mingrammer.com/docs/nodes/k8sAWS:https://diagrams.minggrammer.com/docs/nodes/aws接下来以AWS为例,讲解几个基本的数据流示例:fromdiagramsimportDiagramfromdiagrams。aws.computeimportEC2fromdiagrams.aws.databaseimportRDSfromdiagrams.aws.networkimportELBfromdiagrams.aws.storageimportS3#show参数表示是否使用Diagram("WebServices",show=假):ELB(“lb”)>>EC2(“web”)>>RDS(“userdb”)>>S3(“store”)ELB(“lb”)>>EC2(“web”)>>RDS(“用户数据库”)<>EC2("web"))-EC2("web")>>RDS("userdb")几个操作符:表示从左到右的数据<<的流向表示从右到左的数据流-表示没有箭头的数据流。代码可以简化为变量赋值的形式:direction="TB"):lb=ELB("lb")db=RDS("events")lb>>EC2("worker1")>>dblb>>EC2("worker2")>>dblb>>EC2("worker3")>>dblb>>EC2("worker4")>>dblb>>EC2("worker5")>>db可以看到这里箭头的方向变了。这是因为Diagram添加了方向参数。TB表示数据从上到下流动,即从上到下。其他可选参数包括:LR(从左到右)、BT(从下到上)、RL(从右到左)上面的代码可以进一步简化成数组的形式:=False,direction="TB"):ELB("lb")>>[EC2("worker1"),EC2("worker2"),EC2("worker3"),EC2("worker4"),EC2("worker5")]>>RDS("events")2.3clusterblocks使用Cluster类并以context的形式使用with,可以轻松生成一个clusterblock:fromdiagramsimportCluster,Diagramfromdiagrams.aws.computeimportECSfromdiagrams.aws.databaseimportRDSfromdiagrams.aws.networkimportRoute53withDiagram("SimpleWebServicewithDBCluster",show=False):dns=Route53("dns")web=ECS("service")withCluster("DBCluster"):db_master=RDS("master")db_master-[RDS("slave1"),RDS("slave2")]dns>>web>>db_master并且可以相当复杂:这里的代码很简单,但是它比较长,所以我不会展示如果你是inter大家可以点击下方阅读原文查看。fromdiagramsimportCluster,Diagramsfromdiagrams.aws.computeimportECS,EKS,Lambdafromdiagrams.aws.databaseimportRedshiftfromdiagrams.aws.integrationimportSQSfromdiagrams.aws.storageimportS3withDiagram("EventProcessing",show=False):source=EKS("k8ssource")withCluster("EventFlows"):withCluster("EventWorkers"):workers=[ECS("worker1"),ECS("worker2"),ECS("worker3")]queue=SQS("eventqueue")withCluster("Processing"):handlers=[Lambda("proc1"),Lambda("proc2"),Lambda("proc3")]store=S3("eventsstore")dw=Redshift("analytics")source>>workers>>queue>>handlershandlers>>storehandlers>>dw2.4自定义线条的颜色和属性使用Edge函数,可以自定义线条的颜色和属性lineandRemarks,例如:Edge(color="firebrick",style="dashed",label="test")#firebrick颜色的虚线,remark是test,比较复杂,但是比较容易看懂。一个例子如下:m图导入集群、图表、Edgefromdiagrams.onprem.analyticsimportSparkfromdiagrams.onprem.computeimportServerfromdiagrams.onprem.databaseimportPostgreSQLfromdiagrams.onprem.inmemoryimportRedisfromdiagrams.onprem.loggingimportFluentdfromdiagrams.onprem.monitoringimportGrafana,Prometheusfromdiagrams.onprem.networkimportNginxfromdiagrams.onprem.queueimportKafkawithDiagram(name="AdvancedWebServicewithOn-Premise(colored)",show=False):ingress=Nginx("ingress")指标=Prometheus("metric")指标<>Edge(color="brown")>>masterwithCluster("DatabaseHA"):master=PostgreSQL("users")master-Edge(color="brown",style="dotted")-PostgreSQL("slave")<>Edge(color="black")>>masteraggregator=Fluentd("logging")聚合器>>Edge(label="parse")>>Kafka("stream")>>Edge(color="black",style="bold")>>Spark("analytics")入口>>Edge(color="darkgreen")<>Edge(color="darkorange")>>聚合器3。综上所述,不得不说,这真的是一个非常简单易用的开源免费架构图设计模块,基于Python。用途广泛,包括但不限于:计算机应用架构图、毕业设计架构等,希望大家学以致用。这是我们文章的结尾。想要我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。有什么问题可以在下方评论留言,我们会耐心解答!Python实战宝典不只是合集欢迎来到公众号:Python实战宝典原文来自Python实战宝典:Python快速画出漂亮的系统架构图