Dubbo多版本配置

发布于 2021-04-17  2504 次阅读


Dubbo提供多版本的配置,方便我们做服务的灰度发布,或者是解决不兼容的问题。

当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。

可以按照以下的步骤进行版本迁移:

  1. 在低压力时间段,先升级一半提供者为新版本
  2. 再将所有消费者升级为新版本
  3. 然后将剩下的一半提供者升级为新版本

老版本服务提供者配置:

/**
 * @author huangguizhao
 */
@Service(version = "1.0.0")
public class UserServiceImpl implements IUserService{

    @Override
    public String hello() {
        System.out.println("service hello...");
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "hello";
    }
}

新版本服务提供者配置:

/**
 * @author huangguizhao
 */
@Service(version = "2.0.0")
public class UserServiceImpl2 implements IUserService{

    @Override
    public String hello() {
        System.out.println("service new hello...");
        return "hello";
    }
}

老版本服务消费者配置:

@Reference(loadbalance="roundrobin",cluster = "failover",version = "1.0.0")
private IUserService userService;

新版本服务消费者配置:

@Reference(loadbalance="roundrobin",cluster = "failover",version = "2.0.0")
private IUserService userService;

如果不需要区分版本,可以按照以下的方式配置 :

@Reference(loadbalance="roundrobin",cluster = "failover",version = "*")
private IUserService userService;

欢迎欢迎~热烈欢迎~