资讯详情

如何用 diagrams 列表批量连接多个节点简化数据流?

发布时间:2026/9/16 23:23:51

500+
企业客户服务经验
120+
行业领域内容覆盖
3000+
原创页面设计沉淀
98%
客户满意度

如何用 diagrams 列表批量连接多个节点简化数据流?

如何用 diagrams 列表批量连接多个节点简化数据流【免费下载链接】diagrams:art: Diagram as Code for prototyping cloud system architectures项目地址: https://gitcode.com/GitHub_Trending/di/diagrams用 diagrams 画云架构原型图时经常遇到一个节点要连一组同类节点的任务比如一个负载均衡器后面挂 5 个 worker所有 worker 又都写入同一个数据库。如果逐个节点写连接语句代码会随节点数量线性变长图中也出现大量重复的连线。diagrams 的解法是把多个节点放进一个 Python 列表list让列表整体与前后节点一次性连接用一条语句表达一对多或多对一的数据流。本文以项目文档中 Grouped Workers 示例为主线说明如何把逐个连接的冗余数据流改写成列表批量连接涵盖前置环境、连接运算符、列表语法、已知限制和运行验证。前提是 Python 3.7 以上并且本机已安装 diagrams 依赖的 Graphviz 渲染引擎。准备环境diagrams 使用 Graphviz 渲染图所以要先安装 Graphviz安装文档给出了 macOSHomebrew和 WindowsChocolatey等对应的安装方式。装好 Graphviz 后用 pip 安装 diagrams$ pip install diagrams先看清楚优化前的冗余数据流在Diagram上下文中节点之间用三个运算符连接来表示数据流见 节点指南表示从左到右连接表示从右到左连接-表示无方向连接。文档中优化前的写法是lb逐条连到 5 个 worker每个 worker 再各自连到同一个events数据库from diagrams import Diagram from diagrams.aws.compute import EC2 from diagrams.aws.database import RDS from diagrams.aws.network import ELB with Diagram(Workers, showFalse, directionTB): lb ELB(lb) db RDS(events) lb EC2(worker1) db lb EC2(worker2) db lb EC2(worker3) db lb EC2(worker4) db lb EC2(worker5) db节点再多时这种写法每加一个 worker 就要多写一行且图中连线重复。用列表批量连接多个节点把 5 个 worker 放进一个列表lb → worker 组 → db就写成一条连接语句。列表中的每个节点都会与左右两侧的对象建立连接from diagrams import Diagram from diagrams.aws.compute import EC2 from diagrams.aws.database import RDS from diagrams.aws.network import ELB with Diagram(Grouped Workers, showFalse, directionTB): ELB(lb) [EC2(worker1), EC2(worker2), EC2(worker3), EC2(worker4), EC2(worker5)] RDS(events)两点说明showFalse禁用生成后的自动打开文件行为便于脚本化运行默认是true。direction控制整图的数据流方向默认LR允许取值TB、BT、LR、RL。上例用TB让lb 在上、数据库在下的层级更直观。列表在更复杂数据流中的三种用法示例文档里还有几种直接可复用的列表连接模式以下代码块为官方示例中与列表连接直接相关的节选1. 多个列表串成一条链。Event Processing 示例中workers和handlers都是节点列表与队列一起串行连接workers [ECS(worker1), ECS(worker2), ECS(worker3)] queue SQS(event queue) handlers [Lambda(proc1), Lambda(proc2), Lambda(proc3)] source workers queue handlers2. 列表在连接最左端多对一。GCP Message Collecting 示例中三个IotCore节点组成列表一次性汇入pubsub[IotCore(core1), IotCore(core2), IotCore(core3)] pubsub3. 一个列表向多个目标发连接。Clustered Web Services 示例中svc_group这个服务列表既连数据库也连缓存两条语句分别复用同一个列表svc_group [ECS(web1), ECS(web2), ECS(web3)] svc_group db_primary svc_group memcached此外Stateful Architecture 示例演示了用循环动态构造列表apps.append(svc pod pvc)最后用apps PV(pv) StorageClass(sc)把整个列表接到存储链上适合节点数量不固定的场景。限制与注意事项两个列表不能直接互连。文档明确说明Python 不允许对列表使用移位/算术运算符所以list1 list2这种写法不成立。-与移位运算符混用时加括号。文档提示-与、混用可能因 Python 运算符优先级产生意外结果必要时用括号明确顺序文档给出的示例形如(ELB(lb) EC2(web)) - EC2(web) RDS(userdb)。渲染顺序与声明顺序相反。文档说明The order of rendered diagrams is the reverse of the declaration order即图中节点的排布是代码声明顺序的逆序调整代码顺序时要有这个预期。运行与验证把脚本保存为.py文件后直接运行$ python diagram.py按 Diagram 指南的说明Diagram(...)的第一个参数用于生成输出文件名如 Simple Diagram 生成simple_diagram.png运行后工作目录中会得到对应图片文件本文的 Grouped Workers 示例即生成grouped_workers.png。对照生成结果检查两点worker 组位于lb与数据库之间且每个 worker 节点都与两侧对象相连——与 示例文档 中给出的 grouped workers 效果一致即说明改写成功。如果需要其他格式可在构造Diagram时通过outformat参数指定允许png默认、jpg、svg、pdf、dot也支持传列表一次输出多种格式用filename参数可显式指定文件名不含扩展名。下一步更多节点类型可在 节点列表文档 等页面按 provider 查询需要给连线加颜色、标签等样式时参考 示例文档 中带Edge的 colored 示例需要理解Cluster、outformat、graph_attr等更多选项时阅读 Diagram 指南 与 Node 指南。【免费下载链接】diagrams:art: Diagram as Code for prototyping cloud system architectures项目地址: https://gitcode.com/GitHub_Trending/di/diagrams创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
热门专题

继续阅读更多专题内容

围绕企业服务、数字化转型与官网运营的常青话题,持续输出深度内容

企业官网建设指南 企业托管服务模式 财税政策与解读 企业数字化转型 官网SEO与获客 网站安全与运维
配套服务

读完这篇文章,了解更多服务

从整站搭建到SEO布局,17项核心服务助您打造高转化的企业官网

01

企业托管整站搭建

从信息架构到栏目预留,搭建可生长的企业站点骨架,每个页面独立原创设计。...

了解详情
02

规整可信网页设计

雪地靴温暖风原创设计,金属铜线条贯穿全页,拒绝通用模板与AI流水线。...

了解详情
03

企业服务SEO布局

关键词体系与语义化结构,从建站源头为搜索排名而生。...

了解详情
04

业务预约咨询表单

多场景表单与线索收集体系,把访问流量转化为可追踪的销售线索。...

了解详情
05

企业服务站点运维

安全巡检、数据备份与内容更新支持,全年守护网站稳定运行。...

了解详情
06

全终端商务适配

电脑、平板、手机一致呈现,移动端体验与转化同样出色。...

了解详情
需要专业建议?

让专业顾问为您解读行业趋势

关于企业官网建设、SEO获客与数字化转型的任何疑问,欢迎一对一咨询我们的专业顾问。