用Python创建漂亮的架构图( 二 )

如您所见 , 我们不再有空白图表 。我们每个节点都被描绘了 , 这些就是我们要构建的体系结构的"要素" 。下一步将是将我们的某些节点组织为逻辑分组 , 然后将每个节点与边链接起来 。
用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如您所见 , 该图仍然只是节点列表 , 但是现在我们将适当的节点聚类为逻辑分组 。
用Python创建漂亮的架构图文章插图
> 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边缘属性 , 如果您过去使用该工具可以简化事情 。
用Python创建漂亮的架构图文章插图


推荐阅读