Skip to content

feat(ds-workflow-tab): DS 工作流可视化的架构、契约与执行清单 - #45

Open
88fantasy wants to merge 1 commit into
mainfrom
feat/ds-workflow-tab
Open

feat(ds-workflow-tab): DS 工作流可视化的架构、契约与执行清单#45
88fantasy wants to merge 1 commit into
mainfrom
feat/ds-workflow-tab

Conversation

@88fantasy

Copy link
Copy Markdown
Owner

这个 PR 是什么

DolphinScheduler 工作流可视化需求的设计交付:架构、接口契约、执行任务清单,以及支撑它们的平台侧透传代码。功能实现不在本 PR,由执行清单驱动后续开发。

改动范围

类别 内容
代码 LineageV2Controller / GravitinoLineageClient 透传「按外部运行标识查询」端点(各 +5 行)+ 对应测试
元数据 GRAVITINO/service_ddl.json 新增 externalRunKeys 参数
文档 架构设计(更新为已验证稿)、实施方案、执行任务清单、平台缺陷记录、Gravitino 改造清单
其他 .gitignore 新增 .scratch/

绑定链已端到端验证

需求的技术命门是「调度任务 ↔ 计算作业」的归属。DS 的 app_link 字段对 Flink/Spark 恒为 null(3.3/3.4 执行器重构引入的上游回归,已源码复核 + 接口实测),因此改用注入式标识,两条链均在五节点沙箱跑通:

  • 批(Spark):注入 ds-<clusterId>-<taskInstanceId> → OpenLineage → Gravitino。两组用例的行数与实际写入逐值一致(700/234、900/225)
  • 流(Flink):作业名嵌同一标识 → Doris job_name 前缀匹配 → 取出的 job_id 与引擎 REST 返回完全一致,速率非零

选注入而非名字匹配,是因为失败方式不同:注入在链路断裂时静默缺失(显示为未绑定),名字匹配会给出看起来正确的错误数字。

⚠️ 附带发现两条平台缺陷(独立于本需求,但阻断其落地)

docs/ds-平台缺陷-任务插件缺失与S3凭据漂移-2026-08-25.md

  1. 分发的 DS 3.4.1 包缺全部任务插件 —— Shell/Spark/Flink/SQL 任务在创建工作流定义阶段即被拒,而接口返回的是 request parameter {0} is not valid,真因只在服务端日志。平台装出来的 DS 目前不可用。
  2. DS 的 S3 凭据与对象存储不符 —— S3 客户端只在启动时初始化,错误被运行中的旧进程长期掩盖,任一角色重启即无法启动

两条建议单独排期修复,不必等本需求实现。

测试

  • LineageV2ControllerTest + GravitinoLineageClientTest15 passed / 0 failed
  • 提交前跑过 spotless:apply,diff 未产生额外改动

审阅建议

代码只有 10 行透传,重点在文档:架构设计的 §2.4(7 类静默错误)与 §9.1(已验证结论),以及执行清单的并行分组与验证判据。

平台侧透传 Gravitino「按外部运行标识查询」的接口,并为 GRAVITINO 服务补齐
externalRunKeys 配置项;同时落地本需求的三份设计文档与一份平台缺陷记录。

绑定链已在五节点沙箱端到端验证:
- 批(Spark):注入 ds-<clusterId>-<taskInstanceId> → OpenLineage → Gravitino,
  两组用例的行数与实际写入逐值一致(700/234、900/225)
- 流(Flink):作业名嵌同一标识 → Doris job_name 前缀匹配 → job_id 与引擎
  REST 返回一致,速率非零

文档:
- 架构设计更新为「已验证稿」:静默错误补至 7 类、新增「平台前置缺陷」一节、
  原遗留缺口 G1-G5 全部关闭
- 新增实施方案:接口契约、配置、前端规范、验收步骤
- 新增执行任务清单:4 个 Wave / 13 个任务,含并行分组与状态回写规范
- 新增平台缺陷记录:DS 分发包缺全部任务插件、DS 的 S3 凭据漂移;
  两条均独立于本需求但阻断其落地

.gitignore 新增 .scratch/:需求推导过程留在本地,不进仓库
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant