原型图工具(原型图工具axure)

开源精选是我们在Github、Gitee等开源社区分享优质项目的专栏,包括技术、学习、实用和各种有趣的内容。本期推荐的图是云系统架构的原型图制作库。Chart允

开源精选是我们在Github、Gitee等开源社区分享优质项目的专栏,包括技术、学习、实用和各种有趣的内容。本期推荐的图是云系统架构的原型图制作库。

原型图工具(原型图工具axure)插图

Chart允许你用Python代码画云系统架构。它的诞生是为了在没有任何设计工具的情况下原型化一个新的系统架构。您还可以描述或可视化现有的系统架构,并且作为代码的图允许您在任何版本控制系统中跟踪架构图的变化。相对于在UI上拖动调整各种图标,这种方式更符合我们程序员的使用习惯。

固定

它需要Python版本3.6或更高版本,请先检查您的Python版本。

它使用Graphviz来呈现图表,所以你需要安装Graphviz来使用图表。安装完graphviz(或者已经安装)之后,安装图表。

Brew安装graphviz如果你使用的是Homebrew,macOS用户可以通过以下方式下载Graphviz。同样,安装Chocolatey的Windows用户可以运行choco install graphviz。

# using pip (pip3)$ pip install diagrams# using pipenv$ pipenv install diagrams# using poetry$ poetry add diagrams

快速启动

# diagram.pyfrom diagrams import Diagramfrom diagrams.aws.compute import EC2from diagrams.aws.database import RDSfrom diagrams.aws.network import ELBwith Diagram("Web Service", show=False): ELB("lb") >> EC2("web") >> RDS("userdb")

该代码按如下方式生成:

$ python diagram.py

例子

AWS上的员工分组

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

集群Web服务

from diagrams import Cluster, Diagramfrom diagrams.aws.compute import ECSfrom diagrams.aws.database import ElastiCache, RDSfrom diagrams.aws.network import ELBfrom diagrams.aws.network 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

AWS上的事件处理

from diagrams import Cluster, Diagramfrom diagrams.aws.compute import ECS, EKS, Lambdafrom diagrams.aws.database import Redshiftfrom diagrams.aws.integration import SQSfrom diagrams.aws.storage import S3with Diagram("Event Processing", show=False): source = EKS("k8s source") 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")] store = S3("events store") dw = Redshift("analytics") source >> workers >> queue >> handlers handlers >> store handlers >> dw

旅行指南

图表

图表表示全局图表上下文,您可以使用Diagram类来创建它。图表构造函数的第一个参数将用于输出文件名。

from diagrams import Diagramfrom diagrams.aws.compute import EC2with Diagram("Simple Diagram"): EC2("web")

如果您使用以下命令运行上面的脚本

$ python diagram.py

它将在您的工作目录中生成一个带有单个EC2节点的图像文件,并立即打开创建的图像文件。simple _ graph . png

结节

节点是一个抽象的概念,表示单个系统组件的对象。节点对象由三部分组成:提供者、资源类型和名称。您可能已经看到了前一个示例的每个部分。

from diagrams import Diagramfrom diagrams.aws.compute import EC2with Diagram("Simple Diagram"): EC2("web")

在上面的例子中,它是由提供者提供的资源类型EC2的节点。Computeaws允许您以类似的方式使用其他节点对象,例如:

# aws resourcesfrom diagrams.aws.compute import ECS, Lambdafrom diagrams.aws.database import RDS, ElastiCachefrom diagrams.aws.network 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.k8s.network import Servicefrom diagrams.k8s.storage import PV, PVC, StorageClass...# oracle resourcesfrom diagrams.oci.compute import VirtualMachine, Containerfrom diagrams.oci.network import Firewallfrom diagrams.oci.storage import FileStorage, StorageGateway

数据流

您可以通过用以下操作符连接节点来表示数据流>:& gt:& lt& lt还有。

>> : 从左到右连接节点。<< : 从右到左连接节点。-:无方向连接节点。无向的。from diagrams import Diagramfrom diagrams.aws.compute import EC2from diagrams.aws.database import RDSfrom diagrams.aws.network import ELBfrom diagrams.aws.storage import S3with Diagram("Web Services", show=False): ELB("lb") >> EC2("web") >> RDS("userdb") >> S3("store") ELB("lb") >> EC2("web") >> RDS("userdb") << EC2("stat") (ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb")

Cluster表示本地集群上下文,可以使用Cluster类创建。您还可以将群集中的节点连接到群集中的其他节点。

from diagrams import Cluster, Diagramfrom diagrams.aws.compute import ECSfrom diagrams.aws.database import RDSfrom diagrams.aws.network import Route53with Diagram("Simple Web Service with DB Cluster", show=False): dns = Route53("dns") web = ECS("service") with Cluster("DB Cluster"): db_primary = RDS("primary") db_primary - [RDS("replica1"), RDS("replica2")] dns >> web >> db_primary

边缘

Edge是一个对象,它用一些附加属性来表示节点之间的连接。该对象包含三个属性:标签、颜色和样式,它们反映了相应的graphviz edge属性。

from diagrams import Cluster, Diagram, Edgefrom 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.onprem.network import Nginxfrom diagrams.onprem.queue import Kafkawith Diagram(name="Advanced Web Service with On-Premise (colored)", show=False): ingress = Nginx("ingress") metrics = Prometheus("metric") metrics << Edge(color="firebrick", style="dashed") << Grafana("monitoring") with Cluster("Service Cluster"): grpcsvc = [ Server("grpc1"), Server("grpc2"), Server("grpc3")] with Cluster("Sessions HA"): primary = Redis("session") primary \ - Edge(color="brown", style="dashed") \ - Redis("replica") \ << Edge(label="collect") \ << metrics grpcsvc >> Edge(color="brown") >> primary with Cluster("Database HA"): primary = PostgreSQL("users") primary \ - Edge(color="brown", style="dotted") \ - PostgreSQL("replica") \ << Edge(label="collect") \ << metrics grpcsvc >> Edge(color="black") >> primary aggregator = Fluentd("logging") aggregator \ >> Edge(label="parse") \ >> Kafka("stream") \ >> Edge(color="black", style="bold") \ >> Spark("analytics") ingress \ >> Edge(color="darkgreen") \ << grpcsvc \ >> Edge(color="darkorange") \ >> aggregator

—结束—

开源协议:麻省理工学院许可证

开源地址:

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/145375.html

发表回复

登录后才能评论