Dubbo的三种连接方式

来源:互联网 发布:sql 判断是否在一天内 编辑:程序博客网 时间:2024/06/06 19:25

一、直连提供者+只订阅


开发测试环境下,需要绕过注册中心,直接测试服务提供者,

1.在消费方配置【可以两个以上,中间用逗号隔开】。

<dubbo:reference interface="com.changhf.service.DeptmentService" id="deptmentService" check="false"  url="dubbo://192.168.1.1:20881"/>
serviceImpl里加个断点,每次访问都会走断点。在管控台本地服务接口最后点击禁用,还是可以正常访问,说明绕过了注册中心。


2.在adminstrator账户下建一个dubbo.resolve.properties,默认会读取该文件,

该文件里只需加入以下内容

com.changhf.service.DeptmentService=dubbo\://192.168.1.1\:20881
【注意】如果两种方式都不配置,消费者可能调本地服务也可能是稳定版的服务。

3、有时候你的服务在本地开发测试时需要注册到注册中心,但又没有完全做完的时候,如果就这样注册上去,
其他消费者在调用该服务时,就会偶尔的调用到你本地的服务,这样就报错了。

<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" register="false"/>
在<dubbo:registry >最后添加register="false",这样别人就不会调你的本地服务,但你的本地服务所订阅的服务正常运行。


二、服务分组

官网上该应用值用在一个接口有多种实现类时,但可以用来替代上面的直连提供者+只订阅,因为配置xml,有可能会出现误提交,导致服务出现问题。最好不要为了切换环境而调整源码,这样容易导致将调整的代码发布到生产线,所以排除通过Spring的XML来配置。

<dubbo:service interface="com.changhf.service.IDubboGroupService" ref="dubboGroup1Service" group="feedback2"/>
<dubbo:reference interface="com.changhf.service.IDubboGroupService" id="dubboGroup1Service" check="false" group="feedback2"/>

group属性为该服务接口添加一个分组,消费者就只会调用同一分组的服务接口了。

也可以用version属性来替代:

<dubbo:service interface="com.changhf.service.DeptmentService" ref="deptmentService" version="2.0"/>
<dubbo:reference interface="com.changhf.service.DeptmentService" id="deptmentService" check="false" version="2.0"/>

两者结合,可实现服务的稳步升级。。



三、总结

经过试错,以下配置可以用户生产环境(推荐使用)

<!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="dubboDemo" /><!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" file="/home/chf/registry/dubbo_demo.cache"/><!-- 用dubbo协议在20881端口暴露服务 --><dubbo:protocol name="dubbo" port="20880" /><!-- 监控中心配置 --><!-- 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心 --><dubbo:monitor protocol= "registry" /><dubbo:provider timeout="600000" group="${dubbo.service.group}" version="${dubbo.service.version}" retries="${dubbo.service.retries}"/><dubbo:service interface="com.changhf.service.user.UserInfoManager" ref="userInfoManager" />


<dubbo:provider>为<dubbo:service>和<dubbo:protocol>标签的缺省值设置

同理,<dubbo:consumer>作为<dubbo:reference>标签的缺省值设置。
原创粉丝点击