欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Nx 智能分发机制(Nx Agents + Nx Cloud)

Nx 智能分发机制(Nx Agents + Nx Cloud)

2025/11/21 19:52:56 来源:https://blog.csdn.net/boyzhaotian/article/details/147705702  浏览:    关键词:Nx 智能分发机制(Nx Agents + Nx Cloud)

Nx 智能分发机制(Nx Agents + Nx Cloud)

阶段关键做的事作用
1. 收集信息- Project Graph:解析整个 workspace 依赖关系(谁依赖谁)
- 历史统计:每次 CI 结束后将每个任务的实际用时与缓存命中情况上传到 Nx Cloud
获得带“权重”(预计耗时)的依赖 DAG
2. 生成执行计划- 计算 critical path(最慢依赖链)
- 用历史耗时为每个 task 估价
- 优先调度 会先执行阻塞下游的大任务
将总时长逼近「最长公共库 + 最慢应用」的理论极限
3. 声明式启动分发npx nx-cloud start-ci-run --distribute-on="15 linux-medium-plus-js" --stop-agents-after="e2e-ci"
主 job 做两件事:
① 解析后续所有 nx … 命令
② 把它们提交给 Nx Cloud 调度器
你无需编写任务‑机器映射,仓库结构变化也不用改 CI 脚本
4. Nx Agents 执行- 每台 agent 启动后向 Nx Cloud 拉取「下一条最合适的任务」
- 调度器基于 耗时 + 依赖拓扑 实时分配,保证所有机器尽量满载
- 任务结果立即上传到远程缓存
以任务粒度(而非 VM 粒度)调度,最大化并发、最小化空闲
5. 动态自学习 & 弹性扩容- 跑几次后,历史数据更准确,计划不断微调
- 加 --dynamically-allocate-agents 后,Nx Cloud 会根据 PR 改动面自动决定启动多少台机器
PR 越大机器越多,既省钱又保证最坏情形够快

为什么说它「智能」?

  1. 任务‑而非机器‑中心
    传统做法要先把任务按机器分块写死在 CI 脚本里;Nx Agents 只关心“空闲 agent 数量”,依赖图 + 统计数据实时排程,仓库结构改变也不用改脚本。

  2. 历史耗时启发式调度
    根据真实运行时间,Nx 把长任务尽早塞进队列、把短任务穿插其间,逼近“理论最短壁钟时间”。

  3. 自动拆分大任务
    对 Playwright / Cypress E2E 测试,Nx 会在调度前把单一长任务切成多个 spec task,然后分派到多机并行。

  4. 动态扩缩容
    当 PR 改动范围小,Nx 只拉少量 agent;改动大时自动扩容。


GitHub Actions 最小示例

jobs:main:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4with:fetch-depth: 0# 启动 Nx Cloud 分发,3 台中号 JS runner- run: pnpm dlx nx-cloud start-ci-run               --distribute-on="3 linux-medium-js"               --stop-agents-after="build"# 把任务交给 Nx Cloud 自动分派- run: pnpm exec nx affected -t lint test build

效果示例
vsavkin/interstellar 示例仓库,同一套任务从 87 min → 9 min,仅靠上面一行配置实现。


与缓存的关系

方案解决的问题命中时表现未命中时表现
本地/远程缓存平均值直接复用结果,≈ 0 s仍需完整执行
智能分发最坏值由缓存决定将执行时间压到理论最短壁钟时间
两者结合稳定且极快

结论

Nx 的智能分发(Nx Agents + Nx Cloud)是一套基于 依赖图历史统计数据 的自学习调度系统:

  • 一句配置即可接入
  • 自动计算关键路径并动态并行
  • 动态把任务撒到多机并行
  • 随仓库演化自行调整

让中大型 Monorepo 的 CI 从「数小时」压缩到「数分钟」

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词