在dubbo的文档中说:

 当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
在低压力时间段,先升级一半提供者为新版本
再将所有消费者升级为新版本
然后将剩下的一半提供者升级为新版本





不区分版本:(2.2.0以上版本支持)

示例

服务提供方

// 服务接口定义
package com.dubbosample.service;

public interface IDubbodoSomethingService {  
    public String doSomething();    
}
// 服务接口实现
package com.dubbosample.service.impl;

import com.dubbosample.service.IDubbodoSomethingService;

public class DubbodoSomething1ServiceImpl implements IDubbodoSomethingService {

    @Override
    public String doSomething() {        
        logger.info( "v1 版本");
        return "----";
    }    

}
// 服务接口实现
package com.dubbosample.service.impl; 

import com.dubbosample.service.IDubbodoSomethingService;

public class DubbodoSomething2ServiceImpl implements IDubbodoSomethingService {

    @Override
    public String doSomething() { 
        logger.info( "v2 版本");
        return "*****";
    }

}

下面是spring应用的配置
applicationContext.xml配置:




    
    
    
    
    
 

dubbo.xml配置:




    
    
    
    
    
    
    

    
    
    
     
 

客户端

// 接口声明
package com.dubbosample.service;

public interface IDubbodoSomethingService {
    public String doSomething();    
}

applicationContext.xml 配置:




    
    
 

dubbo.xml 配置:
在这里也配置了服务的多个版本实现引用,使用version




    
    
    
    

    
    
    

    
    
     
    
 

客户端代码

package com.dubbosample.service;
import java.io.IOException;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; 


public class DubboStart{
    public static void main(String[] args) throws IOException {
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        //访问 v1 版本
        IDubbodoSomethingService serviceVersion1=(IDubbodoSomethingService) ctx.getBean("serviceVersion1");
        System.out.println(serviceVersion1.doSomething());
        //访问 v2 版本
        IDubbodoSomethingService serviceVersion2=(IDubbodoSomethingService) ctx.getBean("serviceVersion2");
        System.out.println(serviceVersion2.doSomething());

        //访问随机版本
        IDubbodoSomethingService serviceVersion3=(IDubbodoSomethingService) ctx.getBean("serviceVersion3");
        System.out.println(serviceVersion3.doSomething());

    }
}