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://#:8080"/>

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

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

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

3 進階設定

Apollo 中的一個核心概念是命名空間 - namespace,這與上面 Zookeeper 和 Nacos 的命名空間概念不同,所以使用方法也比較特別。建議在充分理解 Apollo 本身的使用方法之後再閱讀以下文件。

但總體來說,對於 Apollo 的適配

  • namespace 專門用於隔離流量治理規則,詳見 3.1
  • group 專門用於隔離外部化配置,詳見 3.2

3.1 外部化配置

<dubbo:config-center group="demo-provider" address="apollo://#: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://#:8080"/>

配置中心的 namespace 決定 Apollo 存取 流量治理規則 的位置。

  1. 如果命名空間為空,則預設從 dubbo 命名空間存取配置,治理規則必須寫在 dubbo 命名空間下。
  2. 如果命名空間不為空,則從對應的命名空間值讀取規則,治理規則必須寫在此命名空間下。

例如,以下範例透過 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://#:8080

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

最後修改日期:2023 年 1 月 2 日:增強英文文件 (#1798) (95a9f4f6c1c)