结项报告完整版 | 为 Apache DolphinScheduler 添加 gRPC 插件

深入了解项目开发技术细节。



点击蓝字 关注我们



编者语

过去两周,我们对开源之夏活动中表现优异的开发者们进行了简单的采访,初步粗略地了解了一下他们的开发过程和心得体会。今天,我们将通过同学们的完整结项报告,深入了解项目的开发技术细节,希望能够帮助大家更好地了解 Apache DolphinScheduler 项目的最新进展。

接下来是关于为 Apache DolphinScheduler 添加 gRPC 插件这一项目的完整报告:



项目

目标


DolphinScheduler 是一个开源分布式工作流调度系统, 为满足用户在工作流中调用 gRPC 服务的需求,设计并实现了 DolphinScheduler gRPC 插件。
本插件旨在:

  • 支持在任务配置中灵活指定 gRPC 服务地址、端口、方法名、请求参数 等信息。
  • 提供可视化界面和 JSON 方式配置 gRPC 请求参数。
  • 保证任务执行结果能正确返回并绑定至 DolphinScheduler 的 workflow 上下文。
  • 支持异常处理和重试机制,提升任务稳定性。
  • 实现 SSL/TLS 加密连接,保障数据安全。

任务

实现


对照 RFC 文档,插件已满足如下需求:
配置方式与 HTTP Task 类似,降低用户学习成本。

功能性需求:

2.1. 前端

  • 添加 gRPC 任务相关文件及 icon。
  • 实现参数表单,包括服务地址、端口、 gRPC 服务定义、请求方法、请求内容、参 数列表等配置项。
  • 使用 protobuf.js 实现 JSON 与 Protobuf 类型映射。

2.2. 后端

  • 创建 gRPC Task 相关基础代码,实现超时重试等功能。
  • 解析前端传入的参数,支持动态生成 gRPC 调用。
  • 实现错误处理、上下文绑定功能,并验证。
  • 实现请求发送、响应处理、异常捕获与重试逻辑。
  • 安全性:支持使用客户端 SSL/TLS 建立连接。

2.3. 测试覆盖

  • 插件整体功能性单元测试
    https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-task-plugin/dolphinscheduler-task-grpc/src/test/java/org/apache/dolphinscheduler/plugin/task/grpc/GrpcTaskTest.java
    • 工作流及上下文绑定测试
    • 异常处理测试
    • 基础 gRPC 功能测试
  • Protobuf 解析器语法支持相关单元测试
    https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-task-plugin/dolphinscheduler-task-grpc/src/test/java/org/apache/dolphinscheduler/plugin/task/grpc/GrpcParserTest.java
    • map, repeated field 嵌套类型测试 ‣ optional, oneof 字段测试
    • 基础类型测试
  • 基于任务参数的 API 测试 
    https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api-test/dolphinscheduler-api-test-case/src/test/java/org/apache/dolphinscheduler/api/test/cases/tasks/GrpcTaskAPITest.java

2.4. 文档与示例

  • gRPC Task Plugin 中文文档及实例https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/zh/guide/task/grpc.md
  • gRPC Task Plugin 英文文档及实例 https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/en/guide/task/grpc.md

成果

总结


  • 完成 DolphinScheduler gRPC 插件设计与开发。
  • 完成单元测试与集成测试,覆盖主要功能以及边界情况。
  • 提供详细插件使用文档、参数列表与示例。

项目GitHub链接:https://github.com/apache/dolphinscheduler/pull/17402

感谢 OSPP 及 DolphinScheduler 社区各位导师的支持与指导。





用户案例



天翼云Zoom网易邮箱 
每日互动 惠生工程  作业帮 
博世智驾 蔚来汽车 长城汽车
集度长安汽车思科网讯
食行生鲜联通医疗联想
新网银行唯品富邦消费金融 
自如有赞伊利当贝大数据
珍岛集团传智教育Bigo
YY直播  拈花云科太美医疗
Cisco Webex兴业证券




迁移实战



Azkaban   Ooize(当贝迁移案例)
airflow (有赞迁移案例)
Air2phin(迁移工具)
Airflow迁移实践



发版消息




Apache DolphinScheduler 3.2.2版本正式发布!
Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!




加入社区



关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

‍代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler


你的好友秀秀子拍了拍你

并请你帮她点一下“分享”