協定概觀

Triple 概述

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

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

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

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

grpc 對接

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

閘道器存取

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

常見問題

找不到 Protobuf 類別

由於 Triple 協定的底層需要依賴 Protobuf 協定進行傳輸,即使定義的服務介面沒有使用 Protobuf,也需要在環境中引入 Protobuf 相關依賴。

        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.19.4</version>
        </dependency>

最後修改日期:2023 年 2 月 9 日:更新 docsy 至 0.6.0 (#2141) (20081578326)