newlifepapa 发表于 2017-11-17 09:38:20

Springmvc整合dubbo 使用学习(dubbo开发中使用到的一些服务配...

通过之前的学习了解了dubbo的常规的使用,下面我们看看特殊情况或者说真实环境下使用dubbo的一些配置实例。一、一个接口有多个实现时可以使用group来区分1、服务提供者配置
view plain copy



[*]<?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
[*]      ">      
[*]   <!-- 提供方应用信息,用于计算依赖关系,这个和client没必要一致 -->
[*]    <dubbo:application name="hello-world-app-my" />
[*]   <!-- 使用zookeeper广播注册中心暴露服务地址 -->
[*]   <dubbo:registryprotocol="zookeeper"address="192.168.0.107:2181"/>
[*]   <!-- 用dubbo协议在20880端口暴露服务 -->
[*]    <dubbo:protocol name="dubbo" port="20880" />      
[*]   <!-- 声明需要暴露的服务接口 -->
[*]    <dubbo:servicegroup="1" interface="com.test.dubboser.ServiceDemo"
[*]      ref="demoService" />   
[*]    <dubbo:service group="2" interface="com.test.dubboser.ServiceDemo"
[*]      ref="demoService2" />
[*]    <!--和本地bean一样实现服务 -->
[*]    <bean id="demoService"class="com.test.dubboser.ServiceImp"/>
[*]    <bean id="demoService2" class="com.test.dubboser.ServiceImp2"/>
[*]</beans>



其他的配置都是一样,而暴露的服务接口通过group来区分两个实现类

2、服务消费者配置
view plain copy



[*]<?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
[*]      ">      
[*]    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
[*]    <dubbo:application name="consumer-of-helloworld-app-my" />      
[*]       <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
[*]    <dubbo:registryprotocol="zookeeper"address="192.168.0.107:2181" />      
[*]    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->   
[*]    <dubbo:reference id="demoServicemy" group="1" interface="com.test.dubboser.ServiceDemo" />
[*]    <dubbo:reference id="demoServicemy2" group="2" interface="com.test.dubboser.ServiceDemo" />
[*]</beans>


这里同样使用group来区分
二、当一个接口实现出现不兼容升级时可以用版本号过渡,版本号不同的服务互相间不引用1、服务提供者配置
view plain copy



[*]<?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
[*]      ">      
[*]   <!-- 提供方应用信息,用于计算依赖关系,这个和client没必要一致 -->
[*]    <dubbo:application name="hello-world-app-my" />
[*]   <!-- 使用zookeeper广播注册中心暴露服务地址 -->
[*]   <dubbo:registryprotocol="zookeeper"address="192.168.0.107:2181"/>
[*]   <!-- 用dubbo协议在20880端口暴露服务 -->
[*]    <dubbo:protocol name="dubbo" port="20880" />      
[*]   <!-- 声明需要暴露的服务接口 -->
[*]    <dubbo:serviceversion="1" interface="com.test.dubboser.ServiceDemo"
[*]      ref="demoService" />   
[*]    <dubbo:service version="2" interface="com.test.dubboser.ServiceDemo"
[*]      ref="demoService2" />
[*]    <!--和本地bean一样实现服务 -->
[*]    <bean id="demoService"class="com.test.dubboser.ServiceImp"/>
[*]    <bean id="demoService2" class="com.test.dubboser.ServiceImp2"/>
[*]</beans>



添加version 来区分2、服务消费者配置
view plain copy



[*]<?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
[*]      ">      
[*]    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
[*]    <dubbo:application name="consumer-of-helloworld-app-my" />      
[*]       <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
[*]    <dubbo:registryprotocol="zookeeper"address="192.168.0.107:2181" />      
[*]    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->   
[*]    <dubbo:reference id="demoServicemy" version="1" interface="com.test.dubboser.ServiceDemo" />
[*]    <dubbo:reference id="demoServicemy2" version="2" interface="com.test.dubboser.ServiceDemo" />
[*]</beans>


服务消费者这边也要使用version 来区分经典介绍:源码结构http://upload-images.jianshu.io/upload_images/5712789-bf9a2905957020a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240


愿意了解框架技术或者源码的朋友直接求求交流分享技术:2042849237分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨更多详细源码参考来源:http://minglisoft.cn/technology
dubbo+springmvc+mybatis+ehcache+redis J2ee分布式架构, restful, kafka, shiro


标签: dubbo+springmvc+mybatis+ehcache+redis J2ee分布式架构, restful, kafka, shiro


页: [1]
查看完整版本: Springmvc整合dubbo 使用学习(dubbo开发中使用到的一些服务配...