项目依赖
在springboot项目中导入apollo依赖 (注:依赖的版本与配置中心使用的版本保持一致)
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-core</artifactId>
<version>1.1.2</version>
</dependency>
AppId配置
AppId是项目的唯一标识,可以通过3种方式设置,按照优先级从高到底分别为:
-
System Property
通过System Property传入app.id信息,如:-Dapp.id=YOUR-APP-ID
-
Spring Boot application.properties
通过Spring Boot的application.properties文件配置,如:app.id=YOUR-APP-ID
-
app.properties
在项目的 resource 下新建META-INF/app.properties文件,并且其中内容形如:app.id=YOUR-APP-ID
Apollo Meta Server配置
Apollo支持应用在不同的环境有不同的配置,所以需要在运行提供给Apollo客户端当前环境的Apollo Meta Server信息。默认情况下,meta server和config service是部署在同一个JVM进程,所以meta server的地址就是config service的地址
1.0.0版本开始支持以下方式配置apollo meta server信息,按照优先级从高到低分别为:
-
通过Java System Property
apollo.meta
- 可以通过Java的System Property
apollo.meta
来指定 - 在Java程序启动脚本中,可以指定
-Dapollo.meta=http://config-service-url
- 如果是运行jar文件,需要注意格式是
java -Dapollo.meta=http://config-service-url -jar xxx.jar
- 如果是运行jar文件,需要注意格式是
- 通过程序指定,如
System.setProperty("apollo.meta", "http://config-service-url");
- 可以通过Java的System Property
-
通过Spring Boot的配置文件
-
可以在Spring Boot的
application.properties
或bootstrap.properties
中指定apollo.meta=http://config-service-url
-
-
通过操作系统的System Environment
APOLLO_META
- 可以通过操作系统的System Environment
APOLLO_META
来指定 - 注意key为全大写,且中间是
_
分隔
- 可以通过操作系统的System Environment
-
通过
server.properties
配置文件- 可以在
server.properties
配置文件中指定apollo.meta=http://config-service-url
- 对于Mac/Linux,文件位置为
/opt/settings/server.properties
- 对于Windows,文件位置为
C:\opt\settings\server.properties
- 可以在
-
通过
app.properties
配置文件- 可以在
classpath:/META-INF/app.properties
指定apollo.meta=http://config-service-url
- 可以在
-
通过Java system property
${env}_meta
- 如果当前env是
dev
,那么用户可以配置-Ddev_meta=http://config-service-url
- 使用该配置方式,那么就必须要正确配置Environment
- 如果当前env是
-
通过操作系统的System Environment
${ENV}_META
(1.2.0版本开始支持)- 如果当前env是
dev
,那么用户可以配置操作系统的System EnvironmentDEV_META=http://config-service-url
- 注意key为全大写
- 使用该配置方式,那么就必须要正确配置Environment
- 如果当前env是
-
通过
apollo-env.properties
文件- 用户也可以创建一个
apollo-env.properties
,放在程序的classpath下,或者放在spring boot应用的config目录下 - 使用该配置方式,那么就必须要正确配置Environment
- 文件内容形如:
dev.meta=http://1.1.1.1:8080 fat.meta=http://apollo.fat.xxx.com uat.meta=http://apollo.uat.xxx.com pro.meta=http://apollo.xxx.com
如果通过以上各种手段都无法获取到Meta Server地址,Apollo最终会fallback到
http://apollo.meta
作为Meta Server地址 - 用户也可以创建一个
配置本地缓存路径
Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。
本地缓存路径默认位于以下路径,所以请确保/opt/data
或C:\opt\data\
目录存在,且应用有读写权限
- Mac/Linux: /opt/data/{appId}/config-cache
- Windows: C:\opt\data{appId}\config-cache
本地配置文件会以下面的文件名格式放置于本地缓存路径下:
{appId}+{cluster}+{namespace}.properties
- appId就是应用自己的appId,如100004458
- cluster就是应用使用的集群,一般在本地模式下没有做过配置的话,就是default
- namespace就是应用使用的配置namespace,一般是application
自定义缓存路径
1.0.0版本开始支持以下方式自定义缓存路径,按照优先级从高到低分别为:
- 通过Java System Property
apollo.cacheDir
- 可以通过Java的System Property
apollo.cacheDir
来指定 - 在Java程序启动脚本中,可以指定
-Dapollo.cacheDir=/opt/data/some-cache-dir
- 如果是运行jar文件,需要注意格式是
java -Dapollo.cacheDir=/opt/data/some-cache-dir -jar xxx.jar
- 如果是运行jar文件,需要注意格式是
- 也可以通过程序指定,如
System.setProperty("apollo.cacheDir", "/opt/data/some-cache-dir");
- 可以通过Java的System Property
- 通过Spring Boot的配置文件
- 可以在Spring Boot的
application.properties
或bootstrap.properties
中指定apollo.cacheDir=/opt/data/some-cache-dir
- 可以在Spring Boot的
- 通过操作系统的System Environment
APOLLO_CACHEDIR
- 可以通过操作系统的System Environment
APOLLO_CACHEDIR
来指定 - 注意key为全大写,且中间是
_
分隔
- 可以通过操作系统的System Environment
- 通过
server.properties
配置文件- 可以在
server.properties
配置文件中指定apollo.cacheDir=/opt/data/some-cache-dir
- 对于Mac/Linux,文件位置为
/opt/settings/server.properties
- 对于Windows,文件位置为
C:\opt\settings\server.properties
- 可以在
注:本地缓存路径也可用于容灾目录,如果应用在所有config service都挂掉的情况下需要扩容,那么也可以先把配置从已有机器上的缓存路径复制到新机器上的相同缓存路径
Environment配置
Environment可以通过以下3种方式的任意一个配置:
-
通过Java System Property
- 可以通过Java的System Property
env
来指定环境 - 在Java程序启动脚本中,可以指定
-Denv=YOUR-ENVIRONMENT
- 如果是运行jar文件,需要注意格式是
java -Denv=YOUR-ENVIRONMENT -jar xxx.jar
- 如果是运行jar文件,需要注意格式是
- 注意key为全小写
- 可以通过Java的System Property
-
通过操作系统的System Environment
- 还可以通过操作系统的System Environment
ENV
来指定 - 注意key为全大写
- 还可以通过操作系统的System Environment
-
通过配置文件
- 最后一个推荐的方式是通过配置文件来指定
env=YOUR-ENVIRONMENT
- 对于Mac/Linux,文件位置为
/opt/settings/server.properties
- 对于Windows,文件位置为
C:\opt\settings\server.properties
文件内容形如:
env=DEV
目前,
env
支持以下几个值(大小写不敏感):- DEV
- Development environment
- FAT
- Feature Acceptance Test environment
- UAT
- User Acceptance Test environment
- PRO
- Production environment
- 最后一个推荐的方式是通过配置文件来指定
Spring Boot集成
- 在springboot项目的启动类加上 @Configuration、@EnableApolloConfig 注解
- 在Apollo配置中心新建项目
- AppId与前面springboot项目配置的AppId保持一致
- 把原先配置(必须是properties格式)复制一下,然后通过Apollo提供的文本编辑模式全部粘帖到应用的application namespace,发布配置
- 如果原来是其它格式,如yml,请先转成properties格式
- 在线yml转properties
- 把原先的配置文件如bootstrap.properties, application.properties从项目中删除
- 如果需要保留本地配置文件,需要注意部分配置如
server.port
必须确保本地文件已经删除该配置项
如:
spring.application.name = reservation-service
server.port = 8080
logging.level = ERROR
eureka.client.serviceUrl.defaultZone = http://127.0.0.1:8761/eureka/
eureka.client.healthcheck.enabled = true
eureka.client.registerWithEureka = true
eureka.client.fetchRegistry = true
eureka.client.eurekaServiceUrlPollIntervalSeconds = 60
eureka.instance.preferIpAddress = true
- 启动SpringBoot项目