几个你不知道的 dubbo 注册中心细节
你会正确配置 backup 地址吗?
在配置 dubbo 注册中心时,一般会这样写
也会简单地写成
当 zookeeper 地址不止一个,需要配置 backup 地址时,会这样写
这时候如果你简写成这样
那就启动报错了~看下报错日志
为什么会这样?

从源码上能看出,当 address 中包含://
时就认为 address 配置的是一个URL
,此时如果要配置 backup 地址必须在 URL 参数中指定 backup 参数才行;
但当 address 中不包含://
时,dubbo 认为你配置的第一个地址是主,逗号后的地址都是 backup。
多注册中心有什么猫腻?
多注册中心可以这样配置
这样配置 dubbo 的默认行为是双注册
,都消费
。
双注册不用说,就是会将服务注册到这两个注册中心上去,应用启动耗时增加
。
都消费指的是针对每个 provider,consumer 都会和它建立连接,消费时按注册中心顺序挑选一个可用的 invoker 进行调用,也就是说将两个注册中心中提供的服务 merge 起来进行调用。假设这两个注册中心提供了相同的服务,consumer 会和每个 provider 建立2条长链接
。
设置默认消费注册中心怎么这么难?
接上条,如果消费了两个注册中心,两个注册中心都提供了相同的服务,我想设置个默认消费的注册中心怎么设置呢?一般是这么设置
但是经过实践你会发现,有可能不生效,追一下源码

可以看到当注册中心带了default
是会被优先选中的,但为什么有时候这么配置又不行呢?
这是因为 dubbo 的版本问题,上图是2.7.3
版本的代码,到2.7.5
以后RegistryAwareClusterInvoker
被换成了ZoneAwareClusterInvoker
,看下这个类

default
参数被换成了preferred
,所以我们的配置需要改成
如果不放心,可以两个配置都加上,以防万一。
欢迎关注我的公众号“捉虫大师”

版权声明: 本文为 InfoQ 作者【小楼】的原创文章。
原文链接:【http://xie.infoq.cn/article/0c4a8c13f649604f7db4915c8】。文章转载请联系作者。
评论