Dubbo配置——动态配置中心和服务治理

  配置中心(v2.7.0)在Dubbo中承担两个职责:

    1. 外部化配置。启动配置的集中式存储 (简单理解为dubbo.properties的外部化存储)。
    1. 服务治理。服务治理规则的存储与通知。

  启用动态配置(以Zookeeper为例,可查看动态配置配置项详解):

<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
复制代码

  或者

dubbo.config-center.address=zookeeper://127.0.0.1:2181
复制代码

  或者

ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("zookeeper://127.0.0.1:2181");
复制代码
  • 为了兼容2.6.x版本配置,在使用Zookeeper作为注册中心,且没有显示配置配置中心的情况下,Dubbo框架会默认将此Zookeeper用作配置中心,但将只作服务治理用途。
外部化配置
  • 外部化配置目的之一是实现配置的集中式管理,这部分业界已经有很多成熟的专业配置系统如Apollo, Nacos等,Dubbo所做的主要是保证能配合这些系统正常工作。
  • 外部化配置和其他本地配置在内容和格式上并无区别,可以简单理解为dubbo.properties的外部化存储,配置中心更适合将一些公共配置如注册中心、元数据中心配置等抽取以便做集中管理。
# 将注册中心地址、元数据中心地址等配置集中管理,可以做到统一环境、减少开发侧感知。
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.simplified=true

dubbo.metadataReport.address=zookeeper://127.0.0.1:2181

dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

dubbo.application.qos.port=33333
复制代码
  • 优先级

  外部化配置默认较本地配置有更高的优先级,因此这里配置的内容会覆盖本地配置值,你也可通过以下选项调整配置中心的优先级:

-Ddubbo.configCenter.highestPriority=false
复制代码
  • 作用域

  外部化配置有全局和应用两个级别,全局配置是所有应用共享的,应用级配置是由每个应用自己维护且只对自身可见的。

  当前已支持的扩展实现有Zookeeper、Apollo。

Zookeeper
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
复制代码

  默认所有的配置都存储在/dubbo/config节点,具体节点结构图如下:

  • namespace,用于不同配置的环境隔离。
  • config,Dubbo约定的固定节点,不可更改,所有配置和服务治理规则都存储在此节点下。
  • dubbo/application,分别用来隔离全局配置、应用级别配置:dubbo是默认group值,application对应应用名
  • dubbo.properties,此节点的node value存储具体配置内容
Apollo
<dubbo:config-center protocol="apollo" address="127.0.0.1:2181"/>
复制代码

  Apollo中的一个核心概念是命名空间 - namespace(和上面zookeeper的namespace概念不同),在这里全局和应用级别配置就是通过命名空间来区分的。   默认情况下,Dubbo会从名叫dubbo的命名空间中读取全局配置(<dubbo:config-center namespace="your namespace">)

  而应用自有的配置,会从application命名空间读取

  • 注意:当前dubbo.properties是作为一个key存储在Apollo namespace中,为更好的适应Apollo的设计理念,在接下来的版本中可能会调整为

自己加载外部化配置
  • 所谓Dubbo对配置中心的支持,本质上就是把.properties从远程拉取到本地,然后和本地的配置做一次融合。理论上只要Dubbo框架能拿到需要的配置就可以正常的启动,它并不关心这些配置是自己加载到的还是应用直接塞给它的,所以Dubbo还提供了以下API,让用户将自己组织好的配置塞给Dubbo框架(配置加载的过程是用户要完成的),这样Dubbo框架就不再直接和Apollo或Zookeeper做读取配置交互。
// 应用自行加载配置
Map<String, String> dubboConfigurations = new HashMap<>();
dubboConfigurations.put("dubbo.registry.address", "zookeeper://127.0.0.1:2181");
dubboConfigurations.put("dubbo.registry.simplified", "true");

//将组织好的配置塞给Dubbo框架
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setExternalConfig(dubboConfigurations);
复制代码

服务治理

  • Zookeeper
  • 默认节点结构:
  • namespace,用于不同配置的环境隔离。
  • config,Dubbo约定的固定节点,不可更改,所有配置和服务治理规则都存储在此节点下。
  • dubbo,所有服务治理规则都是全局性的,dubbo为默认节点
  • configurators/tag-router/condition-router,不同的服务治理规则类型,node value存储具体规则内容
Apollo
  • 所有的服务治理规则都是全局性的,默认从公共命名空间dubbo读取和订阅:

不同的规则以不同的key后缀区分:

  • configurators,覆盖规则
  • tag-router,标签路由
  • condition-router,条件路由

转载于:https://juejin.im/post/5cbc6ac9e51d456e4d4de745

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值