调度是Foundry中用于自动、定期/按条件触发构建运行的工具,核心目标是让数据在平台内持续更新、自动流动,无需人工手动触发构建。
你在Pipeline Builder/Code Repositories中定义的流水线逻辑,哪怕再完善,也需要手动点击「运行构建」才能更新数据;而调度就是给流水线加了一个「自动启动开关」,满足预设条件时就会自动跑构建,实现7×24小时的自动化数据更新。
文档中定义了两个调度的核心原子概念,是理解所有调度规则的前提:
文档中明确了一个强制硬规则:如果上一次调度运行触发的构建还在运行中,新的触发条件满足时,调度会保持触发状态,直到上一次构建完全完成后,才会执行新的构建。
这个设计和你之前学习的「构建锁定」机制完全联动,核心目的是:
文档中明确了调度运行的3种最终状态,这是你监控调度、排查自动化故障的核心依据,必须区分「调度运行的状态」和「构建本身的状态」——这是实操中最容易踩坑的点。
状态类型 | 官方核心定义 | 本质含义 | 常见场景 | 关键注意事项 |
|---|---|---|---|---|
成功(Success) | 运行成功启动了一个构建 | 调度的触发器正常触发,已经成功向构建系统提交了构建任务 | 定时调度到点触发、上游数据集更新触发,构建任务正常下发 | 【超级大坑】文档特别强调:「成功仅代表构建成功启动,不代表构建本身运行成功」。构建可能还在运行中,也可能已经执行失败,调度状态依然会显示「成功」。想要确认数据是否真的更新成功,必须去「构建应用」查看构建的最终状态。 |
忽略(Ignored) | 尝试了运行,但没有创建构建 | 调度触发了,但系统检查后发现没有需要执行的构建任务,直接跳过了本次运行 | 最核心的场景,就是和你之前学习的陈旧性判断完全联动:系统检查后发现,流水线的所有输入数据集、JobSpec变换逻辑,自上次构建以来都没有任何变化,所有输出数据集都是最新的,没有需要重新计算的内容,因此直接不创建构建。 | 这是正常状态,不是故障。它是Foundry的核心性能优化设计,帮你避免无效的重复计算,节省集群资源。比如你的流水线没有任何修改、上游数据也没有更新,定时调度触发后就会显示「忽略」。 |
失败(Failed) | 调度运行本身失败 | 调度触发后,连构建任务都没能成功提交到构建系统,构建完全没有启动 | 常见场景:1. 调度的运行权限不足、被回收;2. 触发器配置错误、依赖的数据集/流水线被删除/归档;3. 项目权限变更,调度无法访问依赖的资源。 | 要和「构建失败」做严格区分:- 构建失败:构建已经启动,运行过程中出错;- 调度失败:构建根本没启动,调度环节就已经出错。 |
文档中明确了调度的两个核心管理入口,以及全平台调度的搜索、筛选能力,分别适配「单流水线运维」和「全平台批量管理」两种场景。
入口 | 位置 | 核心适用场景 |
|---|---|---|
数据沿袭应用 → 调度侧边栏 | 数据沿袭页面的侧边栏 | 针对单条流水线、单个数据集的调度管理。比如你正在查看某条业务流水线的血缘,需要直接编辑、修改这条流水线的调度,无需跳转其他应用,操作更便捷。 |
搭建调度应用(Build Schedules App) | 平台应用侧边栏的「Build Schedules」 | 全平台调度的全局管理中心,适合平台管理员、数据负责人、运维团队,批量查找、管理、监控全平台的所有调度,是企业级规模化运维的核心入口。 |
文档中重点介绍了搭建调度应用的搜索能力,支持多维度的精准查找,解决了「企业里调度多了之后,找不到对应流水线的调度」的核心痛点。
支持的核心搜索维度如下:
暂停调度,就是临时关闭调度的自动触发能力,阻止它自动运行构建。 典型适用场景:
文档中特别强调:当调度被暂停时,它的触发器状态会被重置,所有已经观察到的触发事件会被全部清空;暂停期间,调度会忽略所有触发事件,不会做任何记录。
这句话的实操含义是:
这是实操中最容易踩坑的点,很多用户会误以为暂停后恢复会补跑期间的任务,实际上官方设计为「暂停期间的事件全部忽略,不补跑」。
恢复暂停的调度后,触发器会重新启动,重新开始监听触发条件,按预设规则正常运行。
这部分是文档的核心重点,也是企业级生产环境调度稳定性的核心决定因素——90%的生产调度失效问题,都是因为选错了权限模式。
文档中明确了调度的两种权限运行模式,核心差异是「调度运行构建时,用谁的权限来访问数据集、执行操作」。
调度的权限绑定到创建调度的用户,调度运行时,会使用创建者的用户权限来执行构建,就像这个用户手动点击了运行构建一样。
优点 | 缺点 |
|---|---|
创建门槛极低,用户创建调度时默认就是这个模式,无需额外配置,个人开发、测试场景使用便捷 | 【致命缺陷】调度的稳定性完全依赖创建者的用户权限:1. 创建者离职、账号被禁用/删除,调度会直接失去权限,运行失败;2. 创建者的权限被收窄,无法访问某个输入数据集,调度会直接失败;3. 人员变动、权限调整都会直接影响生产调度的稳定性,是企业生产环境的最大隐患。 |
调度的权限和具体用户完全解绑,绑定到流水线数据集所属的项目集合,调度运行时,使用项目的权限来执行构建,独立于单个用户的权限。
优点 | 缺点 |
|---|---|
【生产环境最佳实践】极致的稳定性与一致性:1. 哪怕创建调度的用户离职、账号被删除,调度依然能正常运行,因为它的权限来自项目,和用户无关;2. 只有项目的权限范围、项目内的资源发生变化时,调度的权限才会变化,不会因为单个用户的权限调整而失效;3. 完全符合企业级的权限治理规范,权限收敛到项目,而非分散到个人。 | 创建时需要额外配置项目范围,需要项目管理员权限,门槛比用户模式略高。 |
调度是Foundry数据开发全流程的「自动化最后一公里」,和你之前学习的所有知识形成了完整的生产链路闭环:
健康检查是Foundry内置的、针对数据流水线全链路的自动化校验规则,它会按照预设的规则,持续验证流水线的执行状态、数据更新时效、数据可靠性,是保障数据流水线生产稳定性的核心基础设施。
当你的流水线完成开发、通过调度实现了自动化运行后,会面临三大核心风险,健康检查就是针对性解决这些问题:
健康检查和你之前学习的所有核心能力完全打通,形成完整的生产闭环:
文档中明确了Foundry的三类核心健康检查,它们覆盖了流水线从「单任务执行」到「全构建运行」再到「数据持续更新」的全维度校验,各司其职、互为补充,没有任何一类可以完全替代另一类。下面我们逐类拆解,同时明确每一类的不可替代性、适用场景和实操避坑点。
任务级检查是最基础、最原子的健康检查,它的校验对象是「生成单个输出数据集的作业(Job)」,核心验证对应数据集的生成作业是否成功完成。
这里的「任务/作业」,就是你之前学习的构建体系里的最小执行单元:一个作业对应一个/一组输出数据集,负责执行具体的变换逻辑。
它会监控作业的全生命周期状态,核心校验两个维度:
COMPLETED(已完成)状态,有没有出现FAILED(执行失败)、ABORTED(被中止)的异常状态;简单说:它盯着的是「这个数据集的生成任务,有没有正常跑完、有没有成功生成数据」。
任务级检查只能捕获「作业启动了,但执行失败」的问题;如果作业根本没启动(比如调度没触发、构建没排队上),任务级检查不会产生任何告警,这是它的核心边界,必须靠另外两类检查补充。
搭建级检查是流水线全局维度的健康检查,它的校验对象是「一次完整的构建运行」,核心验证两个维度:整个构建是否成功完成、构建是否在预期的时间内完成。
这里要明确它和任务级检查的核心区别:
比如一条流水线A→B→C→D,一次构建会包含A、B、C、D四个作业,搭建级检查看的是这四个作业组成的整个构建的全局状态,而不是单个作业。
它包含两个不可互相替代的校验规则:
搭建级检查依然依赖「构建已经触发运行」,如果调度根本没触发、构建完全没启动,搭建级检查同样不会产生告警,依然需要新鲜度检查来兜底。
新鲜度检查是数据流水线生产稳定性的兜底保障检查,它的校验对象是「数据集的更新时效」,核心验证数据是否按照业务预期保持最新、有没有持续更新。
它是三类检查里唯一不依赖「构建/作业是否运行」的检查,哪怕流水线根本没触发、构建完全没跑,它也能精准发现数据断更的问题,是生产环境绝对不能省略的兜底检查。
它的底层逻辑非常清晰,完全基于你之前学习的数据集事务机制:
举个最典型的例子:
新鲜度阈值的设置,必须和你的调度频率强绑定,通用规则是:阈值 = 2~3倍的调度间隔。
为了让你更清晰的区分三者的边界,避免重复配置或遗漏配置,这里用一张表总结核心差异:
检查类型 | 校验核心 | 依赖构建/作业运行 | 核心不可替代能力 | 必配等级 |
|---|---|---|---|---|
任务级检查 | 单个作业是否成功执行、数据集是否成功生成 | 是 | 精准定位流水线单个节点的执行故障 | 最高(每个数据集必配) |
搭建级检查 | 整个构建是否全量成功、是否在预期时间内跑完 | 是 | 全局校验整条流水线的结果,监控流水线性能超时 | 高(每条流水线必配) |
新鲜度检查 | 数据集是否按预期持续更新、有没有断更 | 否 | 兜底捕获流水线根本没启动、没触发的断更风险 | 最高(每个生产数据集必配) |
你之前学习的「数据健康」应用,就是所有健康检查的统一管理中心,它实现了:
健康检查是Foundry数据流水线从开发到生产落地的最后一环,和你之前学习的所有内容形成了完整的企业级数据流水线全生命周期:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。