大数跨境
0
0

Apache DolphinScheduler 新增 gRPC 任务插件啦!

Apache DolphinScheduler 新增 gRPC 任务插件啦! 白鲸开源
2025-11-11
3
导读:可以实现在java运行时中动态发起gRPC调用。



点击蓝字 关注我们




编者语

今年的开源之夏活动已接近尾声,Apache DolphinScheduler 社区的开发者在经过紧张忙碌的开发过程收获了自己的成果,同时也为 Apache DolphinScheduler 带来了全新的任务插件 gRPC。

这项成果是由来自北京交通大学电气工程专业的优秀同学赵海波带来的,今天我们就来看看他是如何在本次活动中圆满完成开发任务的吧!



个人介绍

赵海波

北京交通大学 电气工程专业

导师:谭恒亮

GitHub ID:npofsi

研究领域:时序数据分析,模型优化控制

兴趣爱好:板绘、美食



项目

名称


  • 为Apache DolphinScheduler 新增 gRPC 任务插件

项目

简介


在OSPP2025中,我主要承担了“为Apache DolphinScheduler 新增 gRPC 任务插件”的工作,这为 DolphinScheduler 添加了与 gRPC 接口进行交互的任务节点。

与 DolphinSchedulerHTTP 任务访问外部 HTTP 接口相似,这个插件主要用于访问外部 gRPC 服务器提供的网络接口,并参考了 HTTP 插件,使用相似的配置参数,结合 DolphinScheduler 插件的 SPI 进行设计。

DolphinScheduler 作为一个进入 CNCF Landscape 的分布式工作流调度系统,在云原生的场景中得到了广泛应用,但目前缺少对云原生场景中普遍存在的 gRPC 协议的支持,因而催生了本项目的需求。

开发

路径

我以此需求为基础,考虑用户实际工作流中调用 gRPC 服务的过程,在导师的指导下结合了接口调试工具的交互逻辑,提供了 schema 和请求消息分别设置的交互方式,在任务执行时进行合并。也因此设计了将 protobuf 和数据在前端预处理、在后端合并的插件实现方式。

配置该 gRPC 任务时,插件在前端接收 gRP C服务入口点、gRPC的protobuf服务定义、请求用消息和SSL等参数,并在保存时将 protobuf 经 protobuf.js 编译为特定描述传递到后端。运行该任务时,在后端按照该描述组装 protobuf descriptor(protobuf内部用于描述消息的二进制格式),然后经相关格式化工具将用户提供的 JSON 格式消息合并到 protobuf descriptor,之后经用户配置的服务入口请求相应的gRPC 调用。

开发

成果

  • 完成 DolphinScheduler gRPC 插件设计与开发,可以实现在 java 运行时中动态发起 gRPC 调用,提供了和 gRPC 调试场景相似的配置模式,可以复用相关配置文件和测试消息。
  • 完成单元测试与集成测试,覆盖主要功能以及边界情况。
  • 提供详细插件使用文档、参数列表与示例。

主要

技术点


开发这个插件时遇到的主要技术点是 gRPC 动态调用的实现。

区别于在 RESTful API 中使用的 schema-on-read 的 JSON 格式,gRPC 使用的是 schema-on-write 的 protobuf 定义,其格式由预先准备的定义文件决定,而不是跟随数据一起传递,这样可以减少传输的载荷,提高效率,并且具有更高的一致性和更多编译期检查,但是需要预先编译描述文件到二进制格式,一般情况下无法在运行时动态调整。

在这个插件中我使用了 protobuf.js 作为编译器,将protobuf 在前端提前进行编译,任务数据同时保存protobuf 源代码和中间描述,在后端根据中间描述直接构建二进制格式,接触了对 protoc 的依赖,使得用户可以在无需安装 protoc 的情况下发起 gRPC 请求。

项目开发完毕后,为了更好地了解同学们在参与开源之夏项目中的开发心得和感受,Apache DolphinScheduler 社区对同学们进行了简短的采访,以下为采访实录

Q

在众多项目中,为什么选择参与Apache DolphinScheduler的项目?

DolphinScheduler 作为一个分布式的工作流调度系统,其架构设计本身就非常有吸引力。首先DS涉及了的任务调度、分布式、云原生等多种概念,这是我希望想要深入学习的领域。而且gRPC 是现代微服务架构中首选的 RPC 框架,一直以来都想要深入的学习一下这项技术。此外,DolphinScheduler 社区非常完善,在申请阶段,我与社区的导师进行了沟通,他们非常耐心,能清晰地阐述项目目标和预期,还有丰富的说明文档、成熟的社区制度和友好的沟通体验,让我对顺利完成项目拥有足够的信心。

A

Q

Apache DolphinScheduler的项目与你的学业有什么交集吗?

我的学业背景是电气工程,主要聚焦于新能源系统的控制与优化。在我的研究领域中,新能源电网本身就是一个复杂的、需要高度协同的分布式系统,所以我很注重云原生相关的技术发展,国家电网就有使用 kubernetes 管理大量的监测节点。因此,我最希望能够在开源社区学习更多的知识,这些知识可以应用到我所在的领域中。

此外,开源社区为我提供了一个与优秀开发者思维碰撞的平台,我非常享受这种围绕具体技术问题,与来自不同领域的同伴进行深度讨论、共同迭代解决方案的氛围。十分希望能够结识志同道合的伙伴、发现新的机遇。

A

Q

参与这个项目给你的学业和未来个人规划带来了哪些影响?对于这些影响,您有什么感受和评价?

参加这次项目最主要还是学习了很多 gRPC 相关的知识,之后也会考虑把 gRPC 用在其他的系统当中,也对 Apache DolphinScheduler 这样的工作流系统有了更深的理解,也学习到了很多测试的知识。然后是非常多的参与感,在导师的热情鼓励下能够完成从提 RFC 到 ISSUE 再到 PR 合并的整个流程,这件事情非常让我满足。

A

Q

参与这个项目的过程中遇到的最大的挑战是什么?您是如何克服的?

在整个项目过程中,我遇到的最大挑战,并非是某个技术难题,而是如何平衡时间,我的主要时间精力还是需要投入到实验室的研究任务中,这意味着参与开源项目依赖于晚上和周末的时间。不过社区持续的、正向的回馈构成了我坚持下来的核心动力。参与社区所带来的成就感和归属感、“创造价值”并被认可的喜悦,是一种强大的内驱力。

A

Q

您参与开源有多长时间了?喜欢开源吗?开源给你带来了哪些改变?

我最早接触开源社区是买了一本有关前端 JavaScript 优化的书籍,里面介绍了一些技术和项目,当时虽然没有实际参与到社区里,也了解了许多相关的知识。后来实际用到了一些由开源社区产出的软件,并且领会到了很多相关的理念之后,就尝试参加了进来。参加开源的过程还是十分快乐的,而且相比于闭门造车,成果的共享使得个人的贡献得以放大,进而获得更多反馈。而我也会在使用软件时更加关注上游的事情,学习到了很多宝贵的经验知识。

A

Q

Apache DolphinScheduler社区贡献给您的第一印象是怎样的?您希望在这里有何收获?社区还有哪些地方你觉得可以改进?

我的第一印象还是在申请阶段和 Mentor 的互动,当时社区导师十分友好,细心地解答了我许多问题。之后在撰写申请、构建软件时也借由社区丰富的文档资源而顺利完成了环境的搭建和软件的运行,从这些地方都可以看出社区的专业、成熟。

通过这次 OSPP 我也学到了很多软件开发的知识,我也希望能从这里学到更多开源社区运作的原理。社区目前已经非常成熟,个人感觉文档方面还可以进一步改进,在插件开发的过程中发现相关的 SPI 文档内容较为滞后,这可能会影响 Apache DolphinScheduler 在功能化插件方面的贡献进度,希望未来能够进一步完善。

A

Q

您后续还会持续在Apache DolphinScheduler社区活跃吗?

会的,尤其是 gRPC 任务插件的目前的维护工作,考虑进一步提升该插件的可维护性,替换掉一些可维护性较低的组件。

A

·END·





白鲸开源



白鲸开源是一家开源原生的DataOps商业公司,是国家高新技术企业,由多个Apache Foundation Member成立,80%员工都是 Apache Committer,运营2个全球Apache开源项目(DolphinScheduler, SeaTunnel)。白鲸开源已根据全球最佳实践发布商业版产品WhaleStudio(含白鲸数据调度平台WhaleScheduler和白鲸数据集成平台WhaleTunnel)。我们致力于打造下一代开源原生的DataOps 平台,助力企业在大数据和云时代,智能化地完成多数据源、多云及信创环境的数据集成、调度开发和治理,以提高企业解决数据问题的效率,提升企业分析洞察能力和决策能力。



了解更多




公司网站:www.whaleops.com
联系邮箱: xiyan@whaleops.com

如果您希望深入了解文中提到的数据质量功能,或者讨论如何将 WhaleStudio 与你的业务流程相结合,我们非常愿意为你提供帮助。欢迎扫码获取WhaleStudio产品白皮书



下滑探索更多WhaleStudio的优势,让我们帮助你构建一个高效、安全的大数据解决方案。🚀

金融行业的应用实例

↓↓↓点击下面链接阅读↓↓↓

国内某头部理财服务提供商基于白鲸调度系统建立统一调度和监控运维

白鲸调度系统助力国内头部券商打造国产信创化 DataOps 平台

白鲸开源 DataOps 平台助力证券行业实现信创数字化转型

最佳实践 | 从Airflow迁移到Apache DolphinScheduler

Apache DolphinScheduler VS WhaleScheduler

代立冬:基于Apache Doris+WhaleTunnel 实现多源实时数据仓库解决方案探索实践

白鲸开源在中信建投 DataOps 应用实践

商业版技术解析实例

点击下面链接阅读↓↓↓

被热议的“DataOps”是炒作?

WhaleScheduler:高并发下的稳定性与性能实践

驾驭数据的未来:WhaleStudio与DataOps的完美结合

WhaleStudio:创新性解决大数据挑战的工具

支持全生态调度:构建企业数字化转型的桥梁


运营开源项目


目前,北京白鲸开源科技有限公司运营着已经从 Apache 基金会毕业的大数据工作流调度平台 Apache DolphinScheduler,以及数据集成平台 Apache SeaTunnel,诚邀全球伙伴加入开源共建!

Apache DolphinScheduler:
仓库地址:https://github.com/apache/dolphinscheduler
官网:https://dolphinscheduler.apache.org/

Apache SeaTunnel:
仓库:https://github.com/apache/seatunnel
官网:https://seatunnel.apache.org/

点个在看你最好看


【声明】内容源于网络
0
0
白鲸开源
白鲸开源是一家开源原生的DataOps公司,主要运营2个Apache顶级开源项目(DolphinScheduler和SeaTunnel),提供相应的商业版本解决企业多数据源、多云及信创环境的数据集成、调度开发和生产运维等问题。
内容 298
粉丝 0
白鲸开源 白鲸开源是一家开源原生的DataOps公司,主要运营2个Apache顶级开源项目(DolphinScheduler和SeaTunnel),提供相应的商业版本解决企业多数据源、多云及信创环境的数据集成、调度开发和生产运维等问题。
总阅读28
粉丝0
内容298