Dubbo 協議遷移至 Triple 協議指南

Triple 協議遷移指南

Triple 簡介

關於 Triple 協議的格式和原理,請參考 RPC 通訊協議

根據 Triple 的設計目標,Triple 協議具有以下優點:

  • 具備跨語言互動能力。無論是傳統的多語言多 SDK 模式還是 Mesh 跨語言模式,都需要一個更通用、更具擴展性的數據傳輸協議。
  • 提供更完整的請求模型。除了支援傳統的 Request/Response 模型(Unary 單向通訊)外,還支援 Stream(串流通訊)和 Bidirectional(雙向通訊)。
  • 易於擴展,高穿透性,包括但不限於 Tracing / Monitoring 等支援,也應被各層級的設備所識別,閘道器設施等都能識別數據包,對 Service Mesh 部署友好,降低用戶的理解難度。
  • 完全相容 grpc,客戶端/伺服器端可與原生 grpc 客戶端互通。
  • 可以複用現有 grpc 生態中的組件,滿足雲原生場景下跨語言、跨環境、跨平台的互通需求。

對於目前使用其他協議的 Dubbo 用戶,框架提供了相容現有序列化方式的遷移能力。在不影響現有線上業務的情況下,遷移協議的成本幾乎為零。

需要新增連接 Grpc 服務的 Dubbo 用戶可以直接使用 Triple 協議完成連接,而無需單獨引入 grpc 客戶端來完成。不僅可以保留現有的 Dubbo 易用性,還可以降低程式的複雜度以及開發維護成本,無需額外適配開發即可連接現有生態。

對於需要網關存取的 Dubbo 使用者來說,Triple 協定提供了一種更原生化的方式,讓網關開發或使用開源 gRPC 網關組件更加容易。網關可以選擇不解析負載,這大大提高了效能。使用 Dubbo 協定時,與程式語言相關的序列化方法是網關的一大痛點,傳統的 HTTP 轉 Dubbo 方法對於跨語言序列化幾乎無能為力。同時,由於 Triple 的協定中繼資料儲存在請求標頭中,網關可以輕鬆實現客製化需求,例如路由和限流。

Dubbo2 協定遷移流程

Dubbo2 使用者使用 Dubbo 協定加上自定義序列化方式,例如 Hessian2 來完成遠端呼叫。

預設情況下,gRPC 只支援 Protobuf 序列化,並且它在 Java 語言中不支援多參數和方法重載。

Dubbo3 最初的目標之一是與 Dubbo2 完全相容。因此,為了確保 Dubbo2 的平滑升級,Dubbo 框架做了大量工作來確保升級過程無縫銜接。目前,預設序列化方式與 Dubbo2 一致,為 `hessian2`。

**因此,如果您決定升級到 Dubbo3 的 `Triple` 協定,您只需要在配置中將協定名稱修改為 `tri`(注意:不是 triple)。**

有關使用 `Triple` 協定的更多說明,請參閱 Triple 協定遷移指南


上次修改時間:2023 年 1 月 2 日:增強英文文件 (#1798) (95a9f4f6c1c)