前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >几个你不知道的dubbo注册中心细节

几个你不知道的dubbo注册中心细节

作者头像
行百里er
发布2021-05-11 11:43:33
8800
发布2021-05-11 11:43:33
举报
文章被收录于专栏:JavaJourneyJavaJourney

你会正确配置backup地址吗?

在配置dubbo注册中心时,一般会这样写

代码语言:javascript
复制
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

也会简单地写成

代码语言:javascript
复制
dubbo.registry.address=zookeeper://127.0.0.1:2181

当zookeeper地址不止一个,需要配置backup地址时,会这样写

代码语言:javascript
复制
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181,127.0.0.1:2182

这时候如果你简写成这样

代码语言:javascript
复制
dubbo.registry.address=zookeeper://127.0.0.1:2181,127.0.0.1:2182

那就启动报错了~看下报错日志

代码语言:javascript
复制
java.lang.IllegalStateException: Failed to receive INITIALIZED event from zookeeper, pls. check if url zookeeper://127.0.0.1:2181,127.0.0.1:2182/org.apache.dubbo.metadata.report.MetadataReport?client=&dubbo.config-center.root-path=/ is correct

为什么会这样?

从源码上能看出,当address中包含://时就认为address配置的是一个URL,此时如果要配置backup地址必须在URL参数中指定backup参数才行;

代码语言:javascript
复制
dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182

但当address中不包含://时,dubbo认为你配置的第一个地址是主,逗号后的地址都是backup。

多注册中心有什么猫腻?

多注册中心可以这样配置

代码语言:javascript
复制
dubbo.registries.zk1.address=zookeeper://127.0.0.1:2181
dubbo.registries.zk2.address=disf://127.0.0.1:2182

这样配置dubbo的默认行为是双注册都消费

双注册不用说,就是会将服务注册到这两个注册中心上去,应用启动耗时增加

都消费指的是针对每个provider,consumer都会和它建立连接,消费时按注册中心顺序挑选一个可用的invoker进行调用,也就是说将两个注册中心中提供的服务merge起来进行调用。假设这两个注册中心提供了相同的服务,consumer会和每个provider建立2条长链接

设置默认消费注册中心怎么这么难?

接上条,如果消费了两个注册中心,两个注册中心都提供了相同的服务,我想设置个默认消费的注册中心怎么设置呢?一般是这么设置

代码语言:javascript
复制
dubbo.registries.zk1.default=true

但是经过实践你会发现,有可能不生效,追一下源码

可以看到当注册中心带了default是会被优先选中的,但为什么有时候这么配置又不行呢?

这是因为dubbo的版本问题,上图是2.7.3版本的代码,到2.7.5以后RegistryAwareClusterInvoker被换成了ZoneAwareClusterInvoker,看下这个类

default参数被换成了preferred,所以我们的配置需要改成

代码语言:javascript
复制
dubbo.registries.zookeeper.preferred=true

如果不放心,可以两个配置都加上,以防万一。


欢迎关注我的公众号

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 行百里er 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你会正确配置backup地址吗?
  • 多注册中心有什么猫腻?
  • 设置默认消费注册中心怎么这么难?
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档