欢迎来到天天文库
浏览记录
ID:34416285
大小:40.58 KB
页数:30页
时间:2019-03-05
《dubbo服务调用动态选择版本》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Dubbo服务调用动态选择版本问题说明Dubbo是阿里巴巴SOA服务化治理方案的核心框架,致力于高性能和透明化的远程服务调用方案和服务治理方案。官方文档见:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm。Dubbo可以和Spring无缝集成,示例如下:1.服务提供端Provider.xml2、ngzheng-demo-app"/>HelloServiceImpl.javapackagecom.telecom.dubbo.3、provider;importorg.springframework.stereotype.Service;importcom.telecom.dubbo.intf.IHelloService;@Service("helloService")publicclassHelloServiceImplimplementsIHelloService{@OverridepublicStringsayHello(Stringname){return"Hello"+name;}}2.客户端调用Consumer.xml4、text:annotation-config/>5、HelloService"interface="com.telecom.dubbo.intf.IHelloService"check="false"version="1.0"/>服务端dubbo:service和客户端dubbo:reference分别有1个version属性。说明:服务端发布provider时可以为服务分配1个版本号,客户端调用服务端的provider时,需要指定调用哪1个版本的服务。项目实施过程碰到一些问题:1.version属性在xml文件中配置,意味着服务端升级版本号,客户端也要相应修改6、配置文件并重启应用。2.项目中存在灰度发布的要求,服务端的provider可能同时存在多个版本,客户端根据用户工号来选择调用哪个版本,比如指定一批测试工号,来测试新版本的provider。整个发布过程需要不重启web应用实现无缝切换,客户端在xml文件中指定版本号就显得不够,dubbo需要支持客户端自行实现版本选择规则,根据规则决定调用相应版本的provider。本文描述了如何重载dubbo的部分代码实现客户端版本规则。实现思路通过分析dubbo2.5.3的源码,标签对应的类7、是com.alibaba.dubbo.config.spring.ReferenceBean的version属性被写到ReferenceBean的version属性中,可以通过ReferenceBean.getVersion()来获取配置文件中指定的远程服务的版本号。该类是工厂类,实现org.springframework.beans.factory.FactoryBean,第64行代码publicObjectgetObject()throwsException{ re8、turnget();}返回IHelloService的代理对象,调用该对象的sayHello方法即可调用远程dubbo服务,远程服务的版本号由ReferenceBean的version属性决定。本文的实现方法是重载ReferenceBean的get()方法,使用javassist技术构造一个新的代理,根据用户自定义的规则来调用相应版本的dubbo服务。实现方法重写ReferenceBe
2、ngzheng-demo-app"/>HelloServiceImpl.javapackagecom.telecom.dubbo.
3、provider;importorg.springframework.stereotype.Service;importcom.telecom.dubbo.intf.IHelloService;@Service("helloService")publicclassHelloServiceImplimplementsIHelloService{@OverridepublicStringsayHello(Stringname){return"Hello"+name;}}2.客户端调用Consumer.xml4、text:annotation-config/>5、HelloService"interface="com.telecom.dubbo.intf.IHelloService"check="false"version="1.0"/>服务端dubbo:service和客户端dubbo:reference分别有1个version属性。说明:服务端发布provider时可以为服务分配1个版本号,客户端调用服务端的provider时,需要指定调用哪1个版本的服务。项目实施过程碰到一些问题:1.version属性在xml文件中配置,意味着服务端升级版本号,客户端也要相应修改6、配置文件并重启应用。2.项目中存在灰度发布的要求,服务端的provider可能同时存在多个版本,客户端根据用户工号来选择调用哪个版本,比如指定一批测试工号,来测试新版本的provider。整个发布过程需要不重启web应用实现无缝切换,客户端在xml文件中指定版本号就显得不够,dubbo需要支持客户端自行实现版本选择规则,根据规则决定调用相应版本的provider。本文描述了如何重载dubbo的部分代码实现客户端版本规则。实现思路通过分析dubbo2.5.3的源码,标签对应的类7、是com.alibaba.dubbo.config.spring.ReferenceBean的version属性被写到ReferenceBean的version属性中,可以通过ReferenceBean.getVersion()来获取配置文件中指定的远程服务的版本号。该类是工厂类,实现org.springframework.beans.factory.FactoryBean,第64行代码publicObjectgetObject()throwsException{ re8、turnget();}返回IHelloService的代理对象,调用该对象的sayHello方法即可调用远程dubbo服务,远程服务的版本号由ReferenceBean的version属性决定。本文的实现方法是重载ReferenceBean的get()方法,使用javassist技术构造一个新的代理,根据用户自定义的规则来调用相应版本的dubbo服务。实现方法重写ReferenceBe
4、text:annotation-config/>5、HelloService"interface="com.telecom.dubbo.intf.IHelloService"check="false"version="1.0"/>服务端dubbo:service和客户端dubbo:reference分别有1个version属性。说明:服务端发布provider时可以为服务分配1个版本号,客户端调用服务端的provider时,需要指定调用哪1个版本的服务。项目实施过程碰到一些问题:1.version属性在xml文件中配置,意味着服务端升级版本号,客户端也要相应修改6、配置文件并重启应用。2.项目中存在灰度发布的要求,服务端的provider可能同时存在多个版本,客户端根据用户工号来选择调用哪个版本,比如指定一批测试工号,来测试新版本的provider。整个发布过程需要不重启web应用实现无缝切换,客户端在xml文件中指定版本号就显得不够,dubbo需要支持客户端自行实现版本选择规则,根据规则决定调用相应版本的provider。本文描述了如何重载dubbo的部分代码实现客户端版本规则。实现思路通过分析dubbo2.5.3的源码,标签对应的类7、是com.alibaba.dubbo.config.spring.ReferenceBean的version属性被写到ReferenceBean的version属性中,可以通过ReferenceBean.getVersion()来获取配置文件中指定的远程服务的版本号。该类是工厂类,实现org.springframework.beans.factory.FactoryBean,第64行代码publicObjectgetObject()throwsException{ re8、turnget();}返回IHelloService的代理对象,调用该对象的sayHello方法即可调用远程dubbo服务,远程服务的版本号由ReferenceBean的version属性决定。本文的实现方法是重载ReferenceBean的get()方法,使用javassist技术构造一个新的代理,根据用户自定义的规则来调用相应版本的dubbo服务。实现方法重写ReferenceBe
5、HelloService"interface="com.telecom.dubbo.intf.IHelloService"check="false"version="1.0"/>服务端dubbo:service和客户端dubbo:reference分别有1个version属性。说明:服务端发布provider时可以为服务分配1个版本号,客户端调用服务端的provider时,需要指定调用哪1个版本的服务。项目实施过程碰到一些问题:1.version属性在xml文件中配置,意味着服务端升级版本号,客户端也要相应修改
6、配置文件并重启应用。2.项目中存在灰度发布的要求,服务端的provider可能同时存在多个版本,客户端根据用户工号来选择调用哪个版本,比如指定一批测试工号,来测试新版本的provider。整个发布过程需要不重启web应用实现无缝切换,客户端在xml文件中指定版本号就显得不够,dubbo需要支持客户端自行实现版本选择规则,根据规则决定调用相应版本的provider。本文描述了如何重载dubbo的部分代码实现客户端版本规则。实现思路通过分析dubbo2.5.3的源码,标签对应的类
7、是com.alibaba.dubbo.config.spring.ReferenceBean的version属性被写到ReferenceBean的version属性中,可以通过ReferenceBean.getVersion()来获取配置文件中指定的远程服务的版本号。该类是工厂类,实现org.springframework.beans.factory.FactoryBean,第64行代码publicObjectgetObject()throwsException{ re
8、turnget();}返回IHelloService的代理对象,调用该对象的sayHello方法即可调用远程dubbo服务,远程服务的版本号由ReferenceBean的version属性决定。本文的实现方法是重载ReferenceBean的get()方法,使用javassist技术构造一个新的代理,根据用户自定义的规则来调用相应版本的dubbo服务。实现方法重写ReferenceBe
此文档下载收益归作者所有