一、准备工作

1.1 环境要求

  • .Net: 4.0+

1.2 必选设置

Apollo客户端依赖于AppIdEnvironment等环境信息来工作,所以请确保阅读下面的说明并且做正确的配置:

1.2.1 AppId

AppId是应用的身份信息,是从服务端获取配置的一个重要信息。

请确保在app.config或web.config有AppID的配置,其中内容形如:

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <appSettings>
  4. <!-- Change to the actual app id -->
  5. <add key="AppID" value="100004458"/>
  6. </appSettings>
  7. </configuration>

注:app.id是用来标识应用身份的唯一id,格式为string。

1.2.2 Environment

Apollo支持应用在不同的环境有不同的配置,所以Environment是另一个从服务器获取配置的重要信息。

Environment通过配置文件来指定,文件位置为C:\opt\settings\server.properties,文件内容形如:

  1. env=DEV

目前,env支持以下几个值(大小写不敏感):

  • DEV
    • Development environment
  • FAT
    • Feature Acceptance Test environment
  • UAT
    • User Acceptance Test environment
  • PRO
    • Production environment

1.2.3 服务地址

Apollo客户端针对不同的环境会从不同的服务器获取配置,所以请确保在app.config或web.config正确配置了服务器地址(Apollo.{ENV}.Meta),其中内容形如:

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <appSettings>
  4. <!-- Change to the actual app id -->
  5. <add key="AppID" value="100004458"/>
  6. <!-- Should change the apollo config service url for each environment -->
  7. <add key="Apollo.DEV.Meta" value="http://dev-configservice:8080"/>
  8. <add key="Apollo.FAT.Meta" value="http://fat-configservice:8080"/>
  9. <add key="Apollo.UAT.Meta" value="http://uat-configservice:8080"/>
  10. <add key="Apollo.PRO.Meta" value="http://pro-configservice:8080"/>
  11. </appSettings>
  12. </configuration>

1.2.4 本地缓存路径

Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

本地缓存路径位于C:\opt\data\{appId}\config-cache,所以请确保C:\opt\data\目录存在,且应用有读写权限。

1.2.5 可选设置

Cluster(集群)

Apollo支持配置按照集群划分,也就是说对于一个appId和一个环境,对不同的集群可以有不同的配置。

如果需要使用这个功能,你可以通过以下方式来指定运行时的集群:

  1. 通过App Config

    • 我们可以在App.config文件中设置Apollo.Cluster来指定运行时集群(注意大小写)
    • 例如,下面的截图配置指定了运行时的集群为SomeCluster
    • apollo-net-apollo-cluster
  2. 通过配置文件

    • 首先确保C:\opt\settings\server.properties在目标机器上存在
    • 在这个文件中,可以设置数据中心集群,如idc=xxx
    • 注意key为全小写

Cluster Precedence(集群顺序)

  1. 如果Apollo.Clusteridc同时指定:

    • 我们会首先尝试从Apollo.Cluster指定的集群加载配置
    • 如果没找到任何配置,会尝试从idc指定的集群加载配置
    • 如果还是没找到,会从默认的集群(default)加载
  2. 如果只指定了Apollo.Cluster

    • 我们会首先尝试从Apollo.Cluster指定的集群加载配置
    • 如果没找到,会从默认的集群(default)加载
  3. 如果只指定了idc

    • 我们会首先尝试从idc指定的集群加载配置
    • 如果没找到,会从默认的集群(default)加载
  4. 如果Apollo.Clusteridc都没有指定:

    • 我们会从默认的集群(default)加载配置