dubbo中对服务多版本的支持
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中对服务多版本的支持相关推荐
- Dubbo中暴露服务的过程解析
原文链接 dubbo暴露服务有两种情况,一种是设置了延迟暴露(比如delay="5000"),另外一种是没有设置延迟暴露或者延迟设置为-1(delay="-1" ...
- c4android 免root,C4Android中4.1.0版本不支持new命令,哪个版本支
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 是约瑟夫环问题,n个孩子围一圈,从一数到m个,第m个退出,继续从1数到m-预测哪个孩子胜出,程序如下:#include "iostream&qu ...
- 一个近乎完美基于Dubbo的微服务改造实践
网易考拉(以下简称考拉)是网易旗下以跨境业务为主的综合型电商,自 2015 年 1 月 9 日上线公测后,业务保持了高速增长,这背后离不开其技术团队的支撑. 微服务化是电商 IT 架构演化的必然趋势, ...
- Zookeeper在Dubbo中的作用及Zk集群的选举原理
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan Zk在Dubbo中的作用 zk在dubbo中是服务注册与发现的注册中心,dubbo的调用过程是c ...
- 源码分析Dubbo Invoker概述----服务发现、集群、负载均衡、路由体系
Invoker,负载网络调用组件,底层依懒与网络通信,Invoker主要负责服务调用,自然与路由(比如集群)等功能息息相关,本节先从整体上把控一下Dubbo服务调用体系,服务发现.集群.负载均衡.路由 ...
- 服务化改造实践 | 如何在 Dubbo 中支持 REST
什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) "架构风格以及基于网络的软件架构设计&q ...
- 服务化改造实践 | 如何在 Dubbo 中支持 REST 1
什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) "架构风格以及基于网络的软件架构设计&q ...
- 服务降级及dubbo中的实现示例
经历过12306抢票的人应该经常会遇到这个问题:在抢票高峰的时候,明明票还有,但是查询出来的列表却是为空的(如果没票列表也应该会呈现):等高峰过后再查询,列表又恢复正常.个人猜测应该是查询过程中出现了 ...
- 深入解析 Dubbo 3.0 服务端暴露全流程
简介:随着云原生时代的到来,Dubbo 3.0 的一个很重要的目标就是全面拥抱云原生.正因如此,Dubbo 3.0 为了能够更好的适配云原生,将原来的接口级服务发现机制演进为应用级服务发现机制. 作者 ...
最新文章
- 对冒泡和二分法,特别是二分法有了更深的理解
- js方法参数中含有单引号双引号的处理
- RabbitMQ(2) 一般介绍
- C#5 复习总结循环 迭代和穷举
- ZGrapher 画函数曲线图的工具
- 怎么在html插入谷歌地图,html页面插入百度or谷歌地图
- 品质管控计划ppt怎样写_线上求助:怎么写好PPT年终总结和年度计划?
- 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·004【App.vue引入全局公共样式】
- (8)机器学习_混淆矩阵(分类模型评估)
- 天勤数据结构顺序表算法操作含完整测试
- java 倒计时_Java倒计时实现的三种简单方式
- MMKV 组件-快速丶读丶查丶写的sp
- 不平衡数据分类实证-R语言
- App开屏页如何设计?来看这五个常用的方法
- 程开甲院士和他的TFDC模型
- python 显示字典内容_在pythontkin的标签中显示字典内容
- 静音计算机方案,如何解决计算机突然静音的问题
- 人才测评技术与应用【2】
- 知云文献翻译打不开_一个可以快速翻译浏览英文文献的工具,拿走不谢!
- SystemVerilog学习-10-验证量化和覆盖率
热门文章
- 自动化运维之部署Puppet
- Android中最详细的焦点问题,从概念出发带你一点点分享(1)
- 开源NAS系统使用总结
- 阅读总结:如何在生产中成功运用Docker
- iOS开发必备指南合集之游戏接入GameCenter 指南
- 软件测试流程进阶----两年软件测试总结[转]
- 【RIA Services】系统分析
- 浅谈c语言中的字符串
- 请画图说明tcp/ip协议栈_5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南 - Android木子李老师...
- android百度地图标方向,Android百度地图之方向感应和模式更改