dubbo中group和version配置项说明

举报
SHQ5785 发表于 2024/05/27 09:37:06 2024/05/27
【摘要】 当一个接口有多种实现时,可以应用group区分。为什么要用dubbo分组配置?因为服务器有限,想在同一个注册中心中,分隔测试和开发环境。那么,分组如何配置?spring管理bean,先看dubbo的配置:1、service中的dubbo配置: spring-dubbo.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:/...

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

为什么要用dubbo分组配置?

因为服务器有限,想在同一个注册中心中,分隔测试和开发环境。

那么,分组如何配置?

spring管理bean,先看dubbo的配置:

1、service中的dubbo配置: spring-dubbo.xml:

<?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="graservice"/>
 <dubbo:protocol name="dubbo" port="20901"/>
 <!-- 使用zookeeper注册中心暴露服务地址 -->
 <dubbo:registry protocol="zookeeper"
        address="${dubbo.registry.address}"
        register="${dubbo.registry.register}"
 />
 <dubbo:annotation package="com.compony.itoo.gra.facade"/>
 <dubbo:annotation package=" com.compony.itoo.gra.service"/>
 <dubbo:consumer check="false" timeout="3000" group ="${dubbo.gra.group}"/>
 <dubbo:provider timeout="3000" group ="${dubbo.gra.group}"/>

</beans>

dubbo.properties:

dubbo.registry.address=zookeeper://192.168.23.60:2181
dubbo.registry.register=true
dubbo.gra.group=ls

2、web中的dubbo配置: spring-dubbo.xml:

<?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配置-start -->
 <dubbo:protocol name="dubbo" port="20900"/>
 <dubbo:application name="graweb"/>
 <dubbo:registry address="${dubbo.registry.address}" />
 <dubbo:consumer check="false" timeout="100000" group ="${dubbo.gra.group}"/>
 <dubbo:annotation/>           <!--开启dubbo注解-->
 <!-- dubbo配置-end -->

</beans>

dubbo.properties

dubbo.registry.address=zookeeper://192.168.23.60:2181
dubbo.gra.group=ls

group分组的设置就如上面红色标注所示:给<dubbo:consumer/><dubbo:provider/> 添加group属性。测试环境和开发环境设置不同的分组值,可以通过组内调用的特性,达到共用注册中心的同时实现环境隔离的效果。同样开发人员本地开发,调试代码,也可以通过使用分组来实现。

先在本地测试,配置好后,启动服务,去dubbo控制台看服务注册情况,显示分组已起作用:

version

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

<!-- 机器A提供1.0.0版本服务 -->

<dubbo:service interface=“com.foo.BarService” version=“1.0.0” />
<!-- 机器B提供2.0.0版本服务 -->

<dubbo:service interface=“com.foo.BarService” version=“2.0.0” />
<!-- 机器C消费1.0.0版本服务 -->

<dubbo:reference id=“barService” interface=“com.foo.BarService” version=“1.0.0” />
<!-- 机器D消费2.0.0版本服务 -->

<dubbo:reference id=“barService” interface=“com.foo.BarService” version=“2.0.0” />

此外,消费者消费服任意版本的服务时:

<dubbo:reference id=“barService” interface=“com.foo.BarService” version=“*” />

另外,接口升级时,要注意方法:在低压力时间段,先升级一半的提供者为新版本; 再将所有的消费者升级为新版本;然后将剩下的一半提供者升级为新版本;

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。