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 协议启动 providerconsumer,并完成调用。
  2. 使用 dubbotri 协议启动 provider,使用 dubbo 协议启动 consumer,并完成调用。
  3. 仅使用 tri 协议启动 providerconsumer,并完成调用。

定义服务

  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 协议

为了确保兼容性,我们首先将一些提供者升级到 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 协议启动 [Provider] (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) 和 [Consumer](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 协议启动

结构如图所示: 信任

[Provider](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) 和 [Consumer](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)