十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Apache DolphinScheduler API 接入与集成:5 大场景跑通完整流程

Apache DolphinScheduler API 接入与集成:5 大场景跑通完整流程 Apache DolphinScheduler API 接入与集成5 大场景跑通完整流程【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler还在页面上一格一格地点想在 CI/CD 或自研平台里用代码统一管调度DolphinScheduler 的 REST 接口就是干这事的。这篇文章带你从拿到第一个令牌到把项目、工作流、实例、统计、权限五类操作全部用接口跑通。所有命令都基于仓库真实实现复制即可执行。5 分钟跑通第一个请求先说结论Token 认证最适合脚本和 CI——它无状态、不依赖 Cookie、可以跨机器复用比会话式登录更适合自动化。整条链路只有三步登录拿会话 → 用会话建一个令牌 → 之后每次请求带token头。# 步骤 1登录把会话 cookie 写到本地文件 curl -c /tmp/ds.txt -X POST http://localhost:12345/dolphinscheduler/login \ -d userNameadmin -d userPassworddolphinscheduler123 # 步骤 2复用会话创建访问令牌 curl -b /tmp/ds.txt -X POST http://localhost:12345/dolphinscheduler/access-tokens \ --data-urlencode userId1 \ --data-urlencode expireTime2027-01-01 00:00:00拿到data里的令牌字符串后把它设为环境变量发第一个业务请求export DS_TOKEN上一步返回的 token # 步骤 3带 token 头查项目列表 curl -X GET http://localhost:12345/dolphinscheduler/projects?pageNo1pageSize10 \ -H token: ${DS_TOKEN}返回长这样{ code: 0, msg: success, data: { totalList: [ { code: 100000000000, name: demo, description: etl } ], total: 1, pageSize: 10, currentPage: 1 } }逐字段拆解code整型结果码0代表成功非 0 才是出错。这是判断成败的第一依据。msg人类可读提示成功时固定是success出错时给出原因。data真正的业务数据。可能是对象、数组也可能是分页对象。分页对象data有四个稳定字段totalList当前页数据数组、total总条数、pageSize每页条数、currentPage当前页码。记住这四个后面所有列表接口通用。路径与约定一张表建立地图感先把地图画清楚后面查接口就不慌了。概念说明例子基础前缀默认端口 12345加上 context-pathhttp://host:12345/dolphinscheduler/版本前缀没有/v1、/v2作用域靠路径段区分projects/{projectCode}/...projectCode项目唯一编码长整型多数接口必带100000000000资源定位资源名 /{code}或/{id}datasources/{id}分页参数pageNo与pageSize成对出现?pageNo1pageSize20认证头每次请求带令牌-H token: xxx两个容易踩的坑先点出来鉴权失败没有 JSON。令牌为空、过期或用户被停用时拦截器直接回 HTTP401没有 body。所以代码里要同时判HTTP 状态和code字段两层。code 和 id 别混。projectCode、workflowDefinitionCode是长整型业务编码走路径id是自增主键多用于数据源、用户、实例。想深入系统结构可以参考 架构设计文档。场景一管理项目资产项目是最外层容器工作流、任务都挂在项目下。这个场景解决程序里怎么建项目、改名、拉列表。方法路径用途POSTprojects创建项目PUTprojects/{code}更新项目GETprojects/{code}查询项目详情GETprojects查询项目列表DELETEprojects/{code}删除项目创建一个项目参数走 formprojectName必填curl -X POST http://localhost:12345/dolphinscheduler/projects \ -H token: ${DS_TOKEN} \ --data-urlencode projectNameetl_platform \ --data-urlencode description数据平台 ETL 项目名字重复会返回10019项目名已存在。删项目前注意项目里还有工作流定义时删不掉会报10137得先把定义清掉。场景二定义任务与工作流改版本、发布上线工作流定义是核心资产。这里解决代码里怎么建流程、留版本、上线。任务定义嵌在工作流里创建也有独立接口查版本。方法路径用途POSTprojects/{projectCode}/workflow-definition创建工作流定义GETprojects/{projectCode}/workflow-definition查询工作流定义列表GETprojects/{projectCode}/workflow-definition/{code}/versions查询工作流历史版本POSTprojects/{projectCode}/workflow-definition/{code}/release上线 / 下线工作流GETprojects/{projectCode}/task-definition/{code}查询任务定义详情关键动作是发布。release接口的releaseState取ONLINE上线或OFFLINE下线只有上线状态的工作流才能被触发运行curl -X POST http://localhost:12345/dolphinscheduler/projects/100000000000/workflow-definition/100000000001/release \ -H token: ${DS_TOKEN} \ -d releaseStateONLINE忘了上线就去跑会收到50004工作流版本未上线。改版本时若版本正被引用切换会报110013该版本被使用。场景三触发运行、启停与重跑实例这一节解决怎么让流程跑起来、再管住它。触发走executors实例查询与删除走workflow-instances停单个任务走task-instances。方法路径用途POSTprojects/{projectCode}/executors/start-workflow-instance触发运行GETprojects/{projectCode}/workflow-instances查询工作流实例列表DELETEprojects/{projectCode}/workflow-instances/{id}删除工作流实例POSTprojects/{projectCode}/task-instances/{id}/stop停止任务实例触发运行需要一批参数其中workflowDefinitionCode、scheduleTime、failureStrategy、warningType、workflowInstancePriority必填。先跑一条列表查询确认连通与数据curl -X GET http://localhost:12345/dolphinscheduler/projects/100000000000/workflow-instances?pageNo1pageSize10 \ -H token: ${DS_TOKEN}实例上的启停操作和当前状态强绑定对一个已经成功结束的实例再发停止命令会报50006实例状态不支持该操作。所以动手前先查状态再决定发什么。场景四查运行状态与统计监控这一节解决批量看健康度。统计接口挂在projects/analysis下startDate、endDate、projectCode都可选不传就统计全量。方法路径用途GETprojects/analysis/task-state-count查询任务状态统计GETprojects/analysis/workflow-state-count查询工作流状态统计GETprojects/analysis/queue-count查询队列任务堆积GETprojects/analysis/listErrorCommand查询失败任务列表查任务各状态数量不传时间则统计全量curl -X GET http://localhost:12345/dolphinscheduler/projects/analysis/task-state-count \ -H token: ${DS_TOKEN}把task-state-count的失败数、queue-count的堆积数纳入你的大盘比盯着单个实例更能反映系统健康。场景五配数据源与用户权限最后一节解决给 SQL 任务连库、给用户开权限。数据源全局管理用户与项目授权配套进行。方法路径用途POSTdatasources创建数据源GETdatasources/{id}/connect-test测试数据源连接POSTusers/create创建用户POSTusers/grant-project授予项目权限GETdatasources查询数据源列表先拉一下当前数据源列表确认命名与可用范围curl -X GET http://localhost:12345/dolphinscheduler/datasources?pageNo1pageSize10 \ -H token: ${DS_TOKEN}创建数据源前先调connect-test预检连不上会返回10016建连失败。用户没被授权到项目时任何项目内操作都会回30002用户无该项目权限这时要回头补授权。更多字段说明可查 中文使用指南。错误码与排查常用错误码先给一张表msg是提示处理建议告诉你往哪查错误码含义处理建议0成功—10013用户名或密码错误检查登录凭据10018项目不存在核对 projectCode10019项目名称已存在换个名字50001工作流实例不存在核对实例 id50003工作流定义不存在核对工作流 code50004工作流版本未上线先调 release 上线50006实例状态不支持该操作查当前状态再操作30002用户无该项目权限先补项目授权70015访问令牌不存在重新生成令牌再答几个高频问题问拿到的是401但没有 JSON body令牌过期、写错或用户被停用拦截器会直接回401空 body。这不是业务错误别按code去解析。重新登录生成令牌即可。问报50004 工作流版本未上线你触发的是一个还没上线的草稿。对同一工作流调releasereleaseStateONLINE后再触发。问报30002 用户无该项目权限这个令牌对应的用户没被授权到目标项目。先走用户授权grant-project再重发原请求。问列表接口code是 0但totalList是空的多半是searchVal过滤掉了全部数据或当前用户对该项目无任何可见资源。去掉搜索词再试仍为空就确认授权。工程化建议落到生产这四件事值得做每条都给一句可执行做法连接复用HTTP 客户端开 keep-alive 长连接池别每次请求新建连接省掉反复握手的开销。指数退避重试只对幂等的GET和5xx重试code ! 0的业务错误不要无脑重发。批量分片节流批量创建或删除时按每批约 50 条切片批间短暂等待避免瞬时打满服务端。调用量监控对code ! 0、4xx、5xx分别打点失败率超阈值就告警别等调用方来反馈。接入前检查清单动手前过一遍这四条能省掉大半返工基础地址对http://host:12345/dolphinscheduler/确认端口与 context-path 一致。令牌有效token头能正常通过且注意401与code两层判断都要覆盖。权限到位调用用户已授权目标项目否则项目内操作必报30002。状态先行对实例的启停、删除操作先查状态再决定动作避开50006。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表