过去两周,我们对开源之夏活动中表现优异的开发者们进行了 简单的采访 ,初步粗略地了解了一下他们的开发过程和心得体会。今天,我们将通过同学们的完整结项报告,深入了解项目的开发技术细节,希望能够帮助大家更好地了解 Apache DolphinScheduler 项目的最新进展。
接下来是关于 为 Apache DolphinScheduler 添加 gRPC 插件 这一项目的完整报告:
DolphinScheduler 是一个开源分布式工作流调度系统, 为满足用户在工作流中调用 gRPC 服务的需求,设计并实现了 DolphinScheduler gRPC 插件。 本插件旨在:
支持在任务配置中灵活指定 gRPC 服务地址、端口、方法名、请求参数 等信息。 提供可视化界面和 JSON 方式配置 gRPC 请求参数。 保证任务执行结果能正确返回并绑定至 DolphinScheduler 的 workflow 上下文。 对照 RFC 文档,插件已满足如下需求: 配置方式与 HTTP Task 类似,降低用户学习成本。
功能性需求:
2.1. 前端 实现参数表单,包括服务地址、端口、 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 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 字段测试 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 社区各位导师的支持与指导。
GitHub: https://github.com/apache/dolphinscheduler 官网 :https://dolphinscheduler.apache.org/en-us 订阅开发者邮件 :dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可) 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 https://github.com/apache/dolphinscheduler