一、准备工作
1.1 环境要求
- .Net: 4.0+
1.2 必选设置
Apollo客户端依赖于AppId
,Environment
等环境信息来工作,所以请确保阅读下面的说明并且做正确的配置:
1.2.1 AppId
AppId是应用的身份信息,是从服务端获取配置的一个重要信息。
请确保在app.config或web.config有AppID的配置,其中内容形如:
<?xml version="1.0"?>
<configuration>
<appSettings>
<!-- Change to the actual app id -->
<add key="AppID" value="100004458"/>
</appSettings>
</configuration>
注:app.id是用来标识应用身份的唯一id,格式为string。
1.2.2 Environment
Apollo支持应用在不同的环境有不同的配置,所以Environment是另一个从服务器获取配置的重要信息。
Environment通过配置文件来指定,文件位置为C:\opt\settings\server.properties
,文件内容形如:
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),其中内容形如:
<?xml version="1.0"?>
<configuration>
<appSettings>
<!-- Change to the actual app id -->
<add key="AppID" value="100004458"/>
<!-- Should change the apollo config service url for each environment -->
<add key="Apollo.DEV.Meta" value="http://dev-configservice:8080"/>
<add key="Apollo.FAT.Meta" value="http://fat-configservice:8080"/>
<add key="Apollo.UAT.Meta" value="http://uat-configservice:8080"/>
<add key="Apollo.PRO.Meta" value="http://pro-configservice:8080"/>
</appSettings>
</configuration>
1.2.4 本地缓存路径
Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。
本地缓存路径位于C:\opt\data\{appId}\config-cache
,所以请确保C:\opt\data\
目录存在,且应用有读写权限。
1.2.5 可选设置
Cluster(集群)
Apollo支持配置按照集群划分,也就是说对于一个appId和一个环境,对不同的集群可以有不同的配置。
如果需要使用这个功能,你可以通过以下方式来指定运行时的集群:
通过App Config
- 我们可以在App.config文件中设置Apollo.Cluster来指定运行时集群(注意大小写)
- 例如,下面的截图配置指定了运行时的集群为SomeCluster
通过配置文件
- 首先确保
C:\opt\settings\server.properties
在目标机器上存在 - 在这个文件中,可以设置数据中心集群,如
idc=xxx
- 注意key为全小写
- 首先确保
Cluster Precedence(集群顺序)
如果
Apollo.Cluster
和idc
同时指定:- 我们会首先尝试从
Apollo.Cluster
指定的集群加载配置 - 如果没找到任何配置,会尝试从
idc
指定的集群加载配置 - 如果还是没找到,会从默认的集群(
default
)加载
- 我们会首先尝试从
如果只指定了
Apollo.Cluster
:- 我们会首先尝试从
Apollo.Cluster
指定的集群加载配置 - 如果没找到,会从默认的集群(
default
)加载
- 我们会首先尝试从
如果只指定了
idc
:- 我们会首先尝试从
idc
指定的集群加载配置 - 如果没找到,会从默认的集群(
default
)加载
- 我们会首先尝试从
如果
Apollo.Cluster
和idc
都没有指定:- 我们会从默认的集群(
default
)加载配置
- 我们会从默认的集群(