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