dubbo中对服务多版本的支持

在dubbo的文档中说:

    当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
在低压力时间段,先升级一半提供者为新版本
再将所有消费者升级为新版本
然后将剩下的一半提供者升级为新版本
<dubbo:service interface="com.foo.BarService" version="1.0.0" />
<dubbo:service interface="com.foo.BarService" version="2.0.0" />
<dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" />
<dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />不区分版本:(2.2.0以上版本支持)<dubbo:reference id="barService" interface="com.foo.BarService" version="*" />

示例

服务提供方

// 服务接口定义
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 {@Overridepublic String doSomething() {        logger.info( "v1 版本");return "----";}    }
// 服务接口实现
package com.dubbosample.service.impl; import com.dubbosample.service.IDubbodoSomethingService;public class DubbodoSomething2ServiceImpl implements IDubbodoSomethingService {@Overridepublic String doSomething() { logger.info( "v2 版本");return "*****";}}

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 配置Bean --><bean id="serviceVersion1" class="com.dubbosample.service.impl.DubbodoSomething1ServiceImpl"/><bean id="serviceVersion2" class="com.dubbosample.service.impl.DubbodoSomething2ServiceImpl"/><!-- 引入配置文件 --><import resource="classpath:dubbo.xml"/></beans>

dubbo.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 指定web服务名字 --><dubbo:application name="DubbodoSomething"/><!-- 声明服务注册中心 --><dubbo:registry  protocol="zookeeper" address="127.0.0.1:2181"/><!-- 指定传输层通信协议 --><dubbo:protocol name="dubbo" port="20880"/><dubbo:protocol name="rmi" port="1099"/><!-- 暴露你的服务地址 --><!-- 这里使用了版本配置 version --><dubbo:service ref="serviceVersion1" interface="com.dubbosample.service.IDubbodoSomethingService"protocol="dubbo,rmi"version="1.0.0"/><dubbo:service ref="serviceVersion2" interface="com.dubbosample.service.IDubbodoSomethingService"protocol="dubbo,rmi"version="1.0.1"/></beans>

客户端

// 接口声明
package com.dubbosample.service;public interface IDubbodoSomethingService {public String doSomething();
}

applicationContext.xml 配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 引入配置文件 --><import resource="classpath:dubbo.xml"/></beans>

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

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 指定web服务名字 --><dubbo:application name="DubbodoSomething"/><!-- 声明服务注册中心 --><dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/><!-- 指定传输层通信协议 --><dubbo:protocol name="dubbo" port="20881"/><dubbo:protocol name="rmi" port="1010"/><!-- 暴露你的服务地址 --><dubbo:reference id="serviceVersion1" interface="com.dubbosample.service.IDubbodoSomethingService"protocol="dubbo"version="1.0.0"/><dubbo:reference id="serviceVersion2" interface="com.dubbosample.service.IDubbodoSomethingService"protocol="dubbo"version="1.0.1"/><dubbo:reference id="serviceVersion3" interface="com.dubbosample.service.IDubbodoSomethingService"protocol="dubbo"version="*"/></beans>

客户端代码

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());}
}

dubbo中对服务多版本的支持相关推荐

  1. Dubbo中暴露服务的过程解析

    原文链接 dubbo暴露服务有两种情况,一种是设置了延迟暴露(比如delay="5000"),另外一种是没有设置延迟暴露或者延迟设置为-1(delay="-1" ...

  2. c4android 免root,C4Android中4.1.0版本不支持new命令,哪个版本支

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 是约瑟夫环问题,n个孩子围一圈,从一数到m个,第m个退出,继续从1数到m-预测哪个孩子胜出,程序如下:#include "iostream&qu ...

  3. 一个近乎完美基于Dubbo的微服务改造实践

    网易考拉(以下简称考拉)是网易旗下以跨境业务为主的综合型电商,自 2015 年 1 月 9 日上线公测后,业务保持了高速增长,这背后离不开其技术团队的支撑. 微服务化是电商 IT 架构演化的必然趋势, ...

  4. Zookeeper在Dubbo中的作用及Zk集群的选举原理

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan Zk在Dubbo中的作用 zk在dubbo中是服务注册与发现的注册中心,dubbo的调用过程是c ...

  5. 源码分析Dubbo Invoker概述----服务发现、集群、负载均衡、路由体系

    Invoker,负载网络调用组件,底层依懒与网络通信,Invoker主要负责服务调用,自然与路由(比如集群)等功能息息相关,本节先从整体上把控一下Dubbo服务调用体系,服务发现.集群.负载均衡.路由 ...

  6. 服务化改造实践 | 如何在 Dubbo 中支持 REST

    什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) "架构风格以及基于网络的软件架构设计&q ...

  7. 服务化改造实践 | 如何在 Dubbo 中支持 REST 1

    什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) "架构风格以及基于网络的软件架构设计&q ...

  8. 服务降级及dubbo中的实现示例

    经历过12306抢票的人应该经常会遇到这个问题:在抢票高峰的时候,明明票还有,但是查询出来的列表却是为空的(如果没票列表也应该会呈现):等高峰过后再查询,列表又恢复正常.个人猜测应该是查询过程中出现了 ...

  9. 深入解析 Dubbo 3.0 服务端暴露全流程

    简介:随着云原生时代的到来,Dubbo 3.0 的一个很重要的目标就是全面拥抱云原生.正因如此,Dubbo 3.0 为了能够更好的适配云原生,将原来的接口级服务发现机制演进为应用级服务发现机制. 作者 ...

最新文章

  1. 对冒泡和二分法,特别是二分法有了更深的理解
  2. js方法参数中含有单引号双引号的处理
  3. RabbitMQ(2) 一般介绍
  4. C#5 复习总结循环 迭代和穷举
  5. ZGrapher 画函数曲线图的工具
  6. 怎么在html插入谷歌地图,html页面插入百度or谷歌地图
  7. 品质管控计划ppt怎样写_线上求助:怎么写好PPT年终总结和年度计划?
  8. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·004【App.vue引入全局公共样式】
  9. (8)机器学习_混淆矩阵(分类模型评估)
  10. 天勤数据结构顺序表算法操作含完整测试
  11. java 倒计时_Java倒计时实现的三种简单方式
  12. MMKV 组件-快速丶读丶查丶写的sp
  13. 不平衡数据分类实证-R语言
  14. App开屏页如何设计?来看这五个常用的方法
  15. 程开甲院士和他的TFDC模型
  16. python 显示字典内容_在pythontkin的标签中显示字典内容
  17. 静音计算机方案,如何解决计算机突然静音的问题
  18. 人才测评技术与应用【2】
  19. 知云文献翻译打不开_一个可以快速翻译浏览英文文献的工具,拿走不谢!
  20. SystemVerilog学习-10-验证量化和覆盖率

热门文章

  1. 自动化运维之部署Puppet
  2. Android中最详细的焦点问题,从概念出发带你一点点分享(1)
  3. 开源NAS系统使用总结
  4. 阅读总结:如何在生产中成功运用Docker
  5. iOS开发必备指南合集之游戏接入GameCenter 指南
  6. 软件测试流程进阶----两年软件测试总结[转]
  7. 【RIA Services】系统分析
  8. 浅谈c语言中的字符串
  9. 请画图说明tcp/ip协议栈_5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南 - Android木子李老师...
  10. android百度地图标方向,Android百度地图之方向感应和模式更改