dubbo应用场景示例四

Posted HelloWorld搬运工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo应用场景示例四相关的知识,希望对你有一定的参考价值。

1、多注册中心

Dubbo 支持同一服务向多注册中心同时注册,或者不同服务分别注册到不同的注册中心上去,甚至可以同时引用注册在不同注册中心上的同名服务。另外,注册中心是支持自定义扩展的(可以自行扩展注册中心)。

1.1、  多注册中心注册

比如:中文站有些服务来不及在青岛部署,只在杭州部署,而青岛的其它应用需要引用此服务,就可以将服务同时注册到两个注册中心。

<?xml version="1.0"encoding="UTF-8"?> 

<beansxmlns="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:applicationname="world" /> 

<!-- 多注册中心配置--> 

<dubbo:registry id="hangzhouRegistry"address="10.20.141.150:9090" /> 

<dubbo:registryid="qingdaoRegistry" address="10.20.141.151:9010"default="false"  />

<!-- 向多个注册中心注册--> 

<dubbo:serviceinterface="com.alibaba.hello.api.HelloService"version="1.0.0" ref= "helloService" registry="hangzhouRegistry,qingdaoRegistry"/> 

</beans>

1.2、  不同服务使用不同注册中心

比如:CRM 有些服务是专门为国际站设计的,有些服务是专门为中文站设计的。

<?xml version="1.0"encoding="UTF-8"?> 

<beansxmlns="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="world" /> 

<!-- 多注册中心配置 --> 

<dubbo:registry id="chinaRegistry"address="10.20.141.150:9090" /> 

<dubbo:registry id="intlRegistry"address="10.20.154.177:9010" default="false" /> 

<!-- 向中文站注册中心注册 --> 

<dubbo:serviceinterface="com.alibaba.hello.api.HelloService"version="1.0.0" ref= "helloService" registry="chinaRegistry" /> 

<!-- 向国际站注册中心注册 --> 

<dubbo:serviceinterface="com.alibaba.hello.api.DemoService"version="1.0.0" ref=" demoService" registry="intlRegistry" /> 

</beans>

1.3、  多注册中心引用

比如:CRM 需同时调用中文站和国际站的 PC2 服务,PC2 在中文站和国际站均有部署,接口及版本号都一样,但连的数据库不一样。

<?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="world" /> 

<!-- 多注册中心配置 --> 

<dubbo:registry id="chinaRegistry"address="10.20.141.150:9090" /> 

<dubbo:registry id="intlRegistry" address="10.20.154.177:9010"default="false" /> 

<!-- 引用中文站服务 --> 

<dubbo:reference id="chinaHelloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0" registry="chinaRegistry" /> 

<!-- 引用国际站站服务 --> 

<dubbo:reference id="intlHelloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0" registry="intlRegistry" /> 

</beans>

<?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="world" /> 

<dubbo:registryaddress="10.20.141.150:9090|10.20.154.177:9010" /> 

<!-- 引用服务 --> 

<dubbo:reference id="helloService"interface="com.alibaba.hello.api.HelloService"  version="1.0.0" /> 

</beans>

2、服务分组

当一个接口有多种实现时,可以用 group 区分。

2.1、  服务

<dubbo:servicegroup="feedback" interface="com.xxx.IndexService" />  

<dubbo:servicegroup="member" interface="com.xxx.IndexService" />

2.2、  引用

<dubbo:referenceid="feedbackIndexService" group="feedback"interface="com.xxx.IndexSe rvice" /> 

<dubbo:referenceid="memberIndexService" group="member"interface="com.xxx.IndewxServi ce" />

任意组(2.2.0 以上版本支持,总是只调一个可用组的实现)

<dubbo:referenceid="barService" interface="com.foo.BarService"group="*" />

3、多版本

当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。

可以按照以下的步骤进行版本迁移:

1. 在低压力时间段,先升级一半提供者为新版本

2. 再将所有消费者升级为新版本

3. 然后将剩下的一半提供者升级为新版本

老版本服务提供者配置:

<dubbo:serviceinterface="com.foo.BarService" version="1.0.0" />

新版本服务提供者配置:

<dubbo:serviceinterface="com.foo.BarService" version="2.0.0" />

老版本服务消费者配置:

<dubbo:referenceid="barService" interface="com.foo.BarService"version="1.0.0" />

新版本服务消费者配置:

<dubbo:referenceid="barService" interface="com.foo.BarService"version="2.0.0" />

如果不需要区分版本,可以按照以下的方式配置(2.2.0 以上版本支持):

<dubbo:referenceid="barService" interface="com.foo.BarService"version="*" />


以上是关于dubbo应用场景示例四的主要内容,如果未能解决你的问题,请参考以下文章

dubbo使用应用场景示例一

dubbo应用场景示例三

dubbo入门示例

redis 三. hash应用场景及底层分析

redis 六. list应用场景及底层分析

Dubbo -- 系统学习 笔记 -- 示例 -- 多注册中心