過去兩週,我們對開源之夏活動中表現優異的開發者們進行了簡單的採訪,初步粗略地瞭解了一下他們的開發過程和心得體會。今天,我們將通過同學們的完整結項報告,深入瞭解項目的開發技術細節,希望能夠幫助大家更好地瞭解 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