Dubbo2 協議遷移

Dubbo2 協定遷移流程

Dubbo2 使用者使用 dubbo 協定 + 自訂序列化方式,例如 hessian2 來完成遠端呼叫。

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

Dubbo3 初期的目標之一是與 Dubbo2 完全相容。因此,為了確保 Dubbo2 的順利升級,Dubbo 框架做了許多工作來確保升級過程無縫。目前,預設的序列化方式與 Dubbo2 一致,為 `hessian2`。

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

接下來我們以一個[專案](https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/ org/apache/dubbo/sample/tri/migration) 為例,說明如何逐步安全地升級。

  1. 僅使用 `dubbo` 協定啟動 `provider` 和 `consumer`,並完成呼叫。
  2. 使用 `dubbo` 和 `tri` 協定啟動 `provider`,使用 `dubbo` 協定啟動 `consumer`,並完成呼叫。
  3. 僅使用 `tri` 協定啟動 `provider` 和 `consumer`,並完成呼叫。

定義服務

  1. 定義介面
public interface IWrapperGreeter {

    //...
    
    /**
     * This is a normal interface, not serialized using pb
     */
    String sayHello(String request);

}
  1. 實作類別如下
public class IGreeter2Impl implements IWrapperGreeter {

    @Override
    public String sayHello(String request) {
        return "hello," + request;
    }
}

僅使用 dubbo 協定

為了確保相容性,我們首先將一些 providers 升級到 `dubbo3` 版本並使用 `dubbo` 協定。

使用 `dubbo` 協定啟動一個 [`Provider`](https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationDubboProvider.java) 和 `Consumer`,完成呼叫,輸出如下: 結果

同時使用 dubbo 和 triple 協定

為了在線服務升級,提供者和消費者的升級無法同時完成,需要逐步操作以確保業務穩定。在第二步中,提供者提供了一種雙協議方式,以同時支持 dubbo + tri 客戶端。

結構如圖所示:信任

根據推薦的升級步驟,提供者已經支持 tri 協議,因此 dubbo3 的消費者可以直接使用 tri 協議

使用 dubbo 協議和 triple 協議啟動 [提供者](https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationBothProvider.java)和 [消費者](https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/ dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationBothConsumer.java),完成調用,輸出如下

result

僅使用 triple 協議

當所有消費者都升級到支持 Triple 協議的版本時,提供者可以切換為僅使用 Triple 協議啟動

結構如圖所示:信任

[提供者](https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/ migration/ApiMigrationTriProvider.java)和 [消費者](https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationTriConsumer.java)完成調用,輸出如下

result


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