当前位置:首页 > 家装 > 装修设计 > 文章正文

研发工程化02:代码即图表Diagram as Code

编辑:[db:作者] 时间:2024-08-24 23:52:16

至少有以下几点好处:

1、提高了开拓效率

研发工程化02:代码即图表Diagram as Code

2、确保信息的同等性,逻辑性,而不是想当然的随便画

3、可以采取Git进行源文件版本掌握

“代码即文档”是一种有效的软件开拓哲学。

之前有先容:软件研发如何高效的画流程图?

今晚再先容一个用Python直接天生系统架构图的方法,diagrams。

安装 Graphviz

它利用Graphviz来渲染图表,因此须要安装Graphviz才能利用图表。

Graphviz(Graph Visualization Software)是一个由AT&T实验室启动的开源工具包,用于绘制DOT措辞脚本描述的图形。

Graphviz是一个自由软件,其授权为Eclipse Public License。
其Mac版本曾经得到2004年的苹果设计奖。

dot:

一个用来将天生的图形转换成多种输出格式的命令行工具。

其输出格式包括PostScript,PDF,SVG,PNG,含表明的文本等等。

DOT措辞是一种文本图形描述措辞。

它供应了一种大略的描述图形的方法。

DOT措辞文件常日是具有.gv或是.dot的文件扩展名。

无向图

在最大略的运用中,DOT措辞可以用来描述一张无向图。

无向图显示了工具间最大略的关系,例犹如伙之间的友情。

利用关键字graph开始一张无向图的定义,并用大括号包含要描述的节点,双连字号(--)被用来描述节点间的关系。
其余,一行的末端须要加上分号(;)。

graph graphname { a -- b -- c; b -- d;}

有向图

digraph graphname { a -> b -> c; b -> d;}

Windows:

https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/9.0.0/windows_10_cmake_Release_graphviz-install-9.0.0-win64.exe

setx PATH "%PATH%;C:\Program Files\Graphviz\bin"

Linux:

sudo apt install graphviz -y export PATH=/usr/bin/dot:$PATH

更多参考文档: https://diagrams.mingrammer.com/

安装

diagrams可让用 Python 代码绘制云系统架构。

它是为了在没有任何设计工具的情形下对新的系统架构设计进行原型设计而设计出来的。

图表目前支持的紧张供应程序包括: AWS 、 Azure 、 GCP 、 Kubernetes 、 Alibaba Cloud 、 Oracle Cloud 等...它还支持 On-Premise 节点、 SaaS 和紧张 Programming 框架和措辞。

图即代码还许可我们跟踪任何版本掌握系统中的架构图变动。

安装:

pip install diagrams -i https://pypi.tuna.tsinghua.edu.cn/simple

第一个入门示例

from diagrams import Diagramfrom diagrams.aws.compute import EC2from diagrams.aws.database import RDSfrom diagrams.aws.network import ELBimport IPython.display as displaywith Diagram("Web 做事", show=False, filename="diagram"): ELB("弹性负载均衡") >> EC2("web做事器") >> RDS("数据库做事器")display.Image("diagram.png", width="100%", height=None)

轻微繁芜一点的

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 Kafkaimport IPython.display as displaywith Diagram(name="Advanced Web Service with On-Premise (colored)", show=False, filename="diagram"): 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 display.Image("diagram.png", width="100%", height=None)

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/lz/zxsj/34131.html

XML地图 | 自定链接

Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码

声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com