用Python创建漂亮的架构图( 二 )
如您所见 , 我们不再有空白图表 。我们每个节点都被描绘了 , 这些就是我们要构建的体系结构的"要素" 。下一步将是将我们的某些节点组织为逻辑分组 , 然后将每个节点与边链接起来 。
文章插图
> Build with the code from the gist linked here.
步骤3:将节点分组(可选)在此示例中 , 我们将对负载平衡的Web服务器进行分组 。在过去创建的大量图表中 , 这并非总是必要的 , 但是随着您的体系结构的发展 , 将这些节点分组到群集中通常可以提高可读性 。
在下面您可以看到 , 要做到这一点 , 我们只需要将节点的实例移动到我们正在创建的集群范围内即可 。
from diagrams import Diagram, Clusterfrom diagrams.aws.compute import EC2from diagrams.aws.network import ELBfrom diagrams.aws.network import Route53from diagrams.onprem.database import PostgreSQL # Would typically use RDS from aws.databasefrom diagrams.onprem.inmemory import Redis # Would typically use ElastiCache from aws.databasewith Diagram("Simple Website Diagram") as diag:dns = Route53("dns")load_balancer = ELB("Load Balancer")database = PostgreSQL("User Database")cache = Redis("Cache")with Cluster("Webserver Cluster"):svc_group = [EC2("Webserver 1"),EC2("Webserver 2"),EC2("Webserver 3")]diag
如您所见 , 该图仍然只是节点列表 , 但是现在我们将适当的节点聚类为逻辑分组 。
文章插图
> Build with the code from the gist linked here.
步骤4:将所有内容连接在一起在最后一步中 , 我们将不会链接刚刚安排要在架构中使用的节点 。当我需要更新或调整架构时 , 此任务使我花费的时间最长 。如果您在下面看一下 , 只需用双箭头定义流到每个节点的流程就可以了! 在此示例中 , 我们将仅链接不带标签的节点 , 但是如果您看一下将标签应用于链接的文档 , 这是一项非常简单的任务 。
from diagrams import Diagram, Clusterfrom diagrams.aws.compute import EC2from diagrams.aws.network import ELBfrom diagrams.aws.network import Route53from diagrams.onprem.database import PostgreSQL # Would typically use RDS from aws.databasefrom diagrams.onprem.inmemory import Redis # Would typically use ElastiCache from aws.databasewith Diagram("Simple Website Diagram", direction='LR') as diag: # It's LR by default, but you have a few options with the orientationdns = Route53("dns")load_balancer = ELB("Load Balancer")database = PostgreSQL("User Database")cache = Redis("Cache")with Cluster("Webserver Cluster"):svc_group = [EC2("Webserver 1"),EC2("Webserver 2"),EC2("Webserver 3")]dns >> load_balancer >> svc_groupsvc_group >> cachesvc_group >> databasediag
【用Python创建漂亮的架构图】生成的图像可以在下面看到 , 现在您可以看到图中每个节点之间的逻辑流程 。可以通过更改定义节点的顺序来逆转此流程 。除了调整流程外 , 您还可以更改许多内容 , 因为边缘对象包含三个属性:标签 , 颜色和样式 。我们不会在这里介绍如何柚木 。如果您有兴趣了解更多信息 , 请参见本文结尾处的文档链接 , 并且这些属性反映了对应的graphviz边缘属性 , 如果您过去使用该工具可以简化事情 。
文章插图
推荐阅读
- 计算机专业大一下学期,该选择学习Java还是Python
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- Lip Factory利用人工智能现场为顾客创建定制口红
- 微软盘点12月OneDrive更新:网页端可创建共享库等
- 2021年Java和Python的应用趋势会有什么变化?
- 非计算机专业的本科生,想利用寒假学习Python,该怎么入手
- 用Python制作图片验证码,这三行代码完事儿
- 历时 1 个月,做了 10 个 Python 可视化动图,用心且精美...
- 为何在人工智能研发领域Python应用比较多