dubbo服务的区分问题

1、背景描述

项目组标准产品有独立的一套dubbo接口,分别有dev、beta、product三种配置文件。

在以标准产品为基础,创建新仓库的时候发现,标准产品dubbo的dev环境与A项目的dubbo的dev环境是一模一样的。

产生的问题就是:A项目的方法调用,调用成了标准项目facade方法。或者是标准项目方法调用,调成了A项目的facade方法。

2、分析及方法

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="${dubbo.application.name}" owner="${dubbo.application.name}"/>
    <dubbo:provider timeout="30000" retries="0"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="${dubbo.protocol.port}" dispather="message" threads="600"/>
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry id="address" address="${dubbo.registry.address}"/>
    <!--xxxx接口发布-->
    <dubbo:service interface="com.xxx.loan.core.api.xxx.facade.XXXFacade" ref="xxxFacade"
                   registry="address" timeout="30000" retries="0"  version="${dubbo.version}"/>

ZK区分方案:dubbo有一套zk配置,一般是一主多备。但目前ZK区分法,我们是用来区分开发环境、测试环境、生产环境的。

                      调整方法:图中 {dubbo.registry.address}

                      zk地址参考:zookeeper://172.xx.xx.1:2181?backup=172.xx.xx.21:2181,172.xx.xx.41:2181

                      最后结论:方案可行,但需要重以后根据标准项目建仓库都要新搭建一套ZK开发环境、测试环境,非常不划算。

分组区分方案:dubbo接口配置xml中,可以为同一dubbo接口分配不同group组。但对于我们标准项目和A项目来讲,会导致很多调用的dubbo接口都要大规模修改一遍,涉及到3个大工程,几十个dubbo接口。

                      调整方法:  即dubbo:service中增加分组参数  group="groupName",其中分组名不一样即可

                      最后结论:方案可行,但手工修改太费事。

版本区分方案:在dubbo接口发布时,都有按照产品迭代主键递增的版本号,比如1.0.0——>1.0.1等等。对于不同项目,我们可以区分bz_1.0.0和a_1.0.0。

                      调整方法:${dubbo.version}修改为不同版本号即可

                      最后结论:方案可行,只需手工修改配置文件即可,按此方法实行。

3、项目的dubbo接口调用,可以考虑下dubbo接口过滤拦截。

     com.alibaba.dubbo.rpc.Filter

猜你喜欢

转载自blog.csdn.net/wzh474420999/article/details/81388348