過去兩週,我們對開源之夏活動中表現優異的開發者們進行了簡單的採訪,初步粗略地瞭解了一下他們的開發過程和心得體會。今天,我們將通過同學們的完整結項報告,深入瞭解項目的開發技術細節,希望能夠幫助大家更好地瞭解 Apache DolphinScheduler 項目的最新進展。
接下來是關於***為 Apache DolphinScheduler 添加 gRPC 插件***這一項目的完整報告:
1. 項目目標
DolphinScheduler 是一個開源分佈式工作流調度系統, 為滿足用户在工作流中調用 gRPC 服務的需求,設計並實現了 DolphinScheduler gRPC 插件。 本插件旨在:
- 支持在任務配置中靈活指定 gRPC 服務地址、端口、方法名、請求參數 等信息。
- 提供可視化界面和 JSON 方式配置 gRPC 請求參數。
- 保證任務執行結果能正確返回並綁定至 DolphinScheduler 的 workflow 上下文。
- 支持異常處理和重試機制,提升任務穩定性。
- 實現 SSL/TLS 加密連接,保障數據安全。
2. 任務實現
對照 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
3. 成果總結
- 完成 DolphinScheduler gRPC 插件設計與開發。
- 完成單元測試與集成測試,覆蓋主要功能以及邊界情況。
- 提供詳細插件使用文檔、參數列表與示例。
項目GitHub鏈接:https://github.com/apache/dolphinscheduler/pull/17402
感謝 OSPP 及 DolphinScheduler 社區各位導師的支持與指導。
Npofsi Koi (github.com/npofsi) npofsi@outlook.com