Apollo

Apollo 配置中心的基本用法和工作原理。

1 前提条件

2 使用说明

在此处查看 完整示例代码

2.1 添加 Maven 依赖

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>3.0.9</version>
</dependency>
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-openapi</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>2.0.0</version>
</dependency>

2.2 启用 Apollo 配置中心

<dubbo:config-center address="apollo://localhost:8080"/>

或者

dubbo
  config-center
    address: apollo://localhost:8080

或者

dubbo.config-center.address=apollo://localhost:8080

或者

ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("apollo://localhost:8080");

3 高级配置

Apollo 中的一个核心概念是命名空间 - 命名空间,它与上面 Zookeeper 和 Nacos 的命名空间概念不同,因此使用方法也比较特殊。建议在充分了解 Apollo 本身的使用方法后再阅读以下文档。

但总的来说,对于 Apollo 的适配

  • 命名空间专门用于隔离流量治理规则,参见 3.1
  • 分组专门用于隔离外部化配置,参见 3.2

3.1 外部化配置

<dubbo:config-center group="demo-provider" address="apollo://localhost:8080"/>

配置中心的 group 决定了 Apollo 从哪里读取外部化配置 dubbo.properties 文件

  1. 如果 group 为空,则默认从 dubbo 命名空间读取配置,用户必须将外部化配置写入 dubbo 命名空间下。
  2. 如果 group 不为空 2.1 如果 group 值为应用名称,则从应用的当前命名空间读取配置,用户必须将外部化配置写入 Apollo 自动指定的应用默认命名空间下。 2.2 如果 group 值为任意值,则从对应的命名空间读取配置,用户必须将外部化配置写入该命名空间下。

例如,以下示例使用 group='dubbo' 的默认全局外部化配置,即所有应用都可以读取该配置。 apollo-configcenter-dubbo.png

如果配置 group='应用名称' 是应用特定的配置,则只有该应用可以读取。

关于外部化文件配置托管,相当于将 dubbo.properties 配置文件的内容存储在 Apollo 中。每个应用可以通过关联共享的 dubbo 命名空间来继承公共配置,然后可以单独覆盖个别配置项。

3.2 流量治理规则

**流量治理规则必须全局共享,因此每个应用中的命名空间配置应保持一致。**

<dubbo:config-center namespace="governance" address="apollo://localhost:8080"/>

配置中心的 namespace 决定了 Apollo 访问 流量治理规则 的位置

  1. 如果 namespace 为空,则默认从 dubbo 命名空间访问配置,治理规则必须写入 dubbo 命名空间下。
  2. 如果 namespace 不为空,则从对应的 namespace 值读取规则,治理规则必须写入该命名空间下。

例如,以下示例通过 namespace='governance' 将流量治理规则放在 governance 命名空间下。 apollo-configcenter-governance-dubbo.png

3.3 更多 Apollo 特定的配置

目前 Dubbo 适配了 env、apollo.meta、apollo.cluster、apollo.id 等独特的配置项,可以通过 config-center 的扩展参数进行配置。

例如

dubbo.config-center.address=apollo://localhost:8080

或者

dubbo.config-center.prameters.apollo.meta=xxx
dubbo.config-center.prameters.env=xxx

上次修改时间:2023 年 1 月 2 日:增强英文文档 (#1798) (95a9f4f6c1c)