dubbo服务调用动态选择版本

dubbo服务调用动态选择版本

ID:34416285

大小:40.58 KB

页数:30页

时间:2019-03-05

dubbo服务调用动态选择版本_第1页
dubbo服务调用动态选择版本_第2页
dubbo服务调用动态选择版本_第3页
dubbo服务调用动态选择版本_第4页
dubbo服务调用动态选择版本_第5页
资源描述:

《dubbo服务调用动态选择版本》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Dubbo服务调用动态选择版本问题说明Dubbo是阿里巴巴SOA服务化治理方案的核心框架,致力于高性能和透明化的远程服务调用方案和服务治理方案。官方文档见:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm。Dubbo可以和Spring无缝集成,示例如下:1.服务提供端Provider.xml

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.xml

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{    re

8、turnget();}返回IHelloService的代理对象,调用该对象的sayHello方法即可调用远程dubbo服务,远程服务的版本号由ReferenceBean的version属性决定。本文的实现方法是重载ReferenceBean的get()方法,使用javassist技术构造一个新的代理,根据用户自定义的规则来调用相应版本的dubbo服务。实现方法重写ReferenceBe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。