Dubbo多注册中心
(1) 多注册中心注册
需求:xx银行有些服务来不及在上海部署,只在北京部署,而上海的其它应用需要引用此服务,就可以将服务同时注册到两个注册中心。
consumer.xml
<?xmlversion="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:registryid="beijingRegistry"address="10.20.141.150:9090"/>
<dubbo:registryid="shanghaiRegistry"address="10.20.141.151:9010"default="false"/>
<!-- 向多个注册中心注册 -->
<dubbo:serviceinterface="com.alibaba.hello.api.HelloService"version="1.0.0"ref="helloService"registry="beijingRegistry,shanghaiRegistry"/>
</beans>
以上的工作便是扩展了注册中心,多注册中心注册,将HelloService的服务同时注册到上海和北京的注册中心
(2) 不同服务使用不同注册中心
需求:xx银行有些服务是专门为国外设计的,有些服务是专门为国内设计的。
consumer.xml
<?xmlversion="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:registryid="chinaRegistry"address="10.20.141.150:9090"/>
<dubbo:registryid="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>
不同服务使用不同注册中心是注册中心扩展的第二个需求,当然这个内容对于开发者而言非常有用,尤其是在本地调试进行开发的时候一些服务是我本地所不能提供的,这时候这种需求就需要我们扩展注册中心.
(3) 多注册中心引用
需求:xx银行需同时调用国内和国外的xxx服务,xxx服务在中文站和国际站均有部署,接口及版本号都一样,但连的数据库不一样。
consumer.xml
<?xmlversion="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:registryid="chinaRegistry"address="10.20.141.150:9090"/>
<dubbo:registryid="intlRegistry"address="10.20.154.177:9010"default="false"/>
<!-- 引用中文站服务 -->
<dubbo:referenceid="chinaHelloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0"registry="chinaRegistry"/>
<!-- 引用国际站站服务 -->
<dubbo:referenceid="intlHelloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0"registry="intlRegistry"/>
</beans>
如果只是测试环境临时需要连接两个不同注册中心,使用竖号分隔多个不同注册中心地址:
consumer.xml
<?xmlversion="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:registryaddress="10.20.141.150:9090|10.20.154.177:9010"/>
<!-- 引用服务 -->
<dubbo:referenceid="helloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0"/>
</beans>
通过对扩展注册中心和扩展协议的了解,dubbo本身还是非常灵活的.当然,这里的协议和注册中心只是它多个可扩展内容的一部分.它还具有集群扩展,线程池扩展,缓存扩展,容器扩展等等丰富的扩展内容.其他的扩展内容我在项目中还未实际用到.或许会在以后更为特殊的需求上面用到他们.