docker中的java客户端项目如何使用apollo配置中心

完成了apollo配置中心的搭建工作之后,最重要的就是apollo配置中心的使用。Apollo的详细使用可参考apollo wiki中给出《Java客户端使用指南》

下面简单介绍快速使用,并会说到部署在docker中的项目作为apollo的客户端时,该如何配置,如何使用?

 

环境要求:java 1.7+ , Guava 15.0+ (apollo客户端默认引入19.0),如果你的项目引入的其他版本,确保版本号大于等于15.0

运行环境:windows, linux, docker

Apollo使用指南

参考《apollo使用指南》

访问apollo配置页面

默认登录账号: apollo/admin

项目中的配置

主要配置有三项:

(1)、配置AppId

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

此信息推荐通过配置文件的形式来配置,省的其他开发同事每次都配一遍的系统参数,配置文件的方式,官方wiki也给出来三种方式,下面列出我使用的一种:

配在app.properties文件中

确保classpath:/META-INF/app.properties文件存在,并且其中内容形如:

app.id=YOUR-APP-ID

文件位置参考如下:

图片.png

(2)、配置环境

在windows系统的开发环境,推荐通过配置文件的形式配置:

通过配置文件来指定env=YOUR-ENVIRONMENT

默认文件位置:

对于Mac/Linux,文件位置为/opt/settings/server.properties

对于Windows,文件位置为C:\opt\settings\server.properties

文件内容形如:

env=DEV

如果linux非docker中部署,同一台机器也可以这样配置,对一台服务来说这是一劳永逸的事情,其他项目共享此配置。

在docker中部署的项目,推荐使用java system property:

通过Java的System Property env来指定环境

在Java程序启动脚本中,可以指定-Denv=YOUR-ENVIRONMENT

如果是运行jar文件,需要注意格式是java -Denv=YOUR-ENVIRONMENT -jar xxx.jar

注意key为全小写

所以我们就可以想到docker的专属文件Dockerfile,如下图,在项目的resource的资源目录下

图片.png

打开Dockerfile文件,如下图中,在参数ENTRYPOINT中加入系统参数-Denv=DEV,就可以了

图片.png

为什么选用系统参数的形式,而不再用配置文件的形式呢?

第一,  这种比较方便,丢到任何docker环境中都可以使用

第二,  就是考虑docker的特殊性,配置文件放在外面访问不到,放在容器里面,每次部署项目都去重新配置,太不现实,更不友好。

当然,如果是非常熟悉docker,给项目的docker配置加一个文件卷的配置,不知是否可行,但也意味着,每个项目的docker配置都要加这种文件卷。

 

 

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

DEV : Development environment

FAT : Feature Acceptance Test environment

UAT : User Acceptance Test environment

PRO : Production environment

更多环境定义,可以参考Env.java

 

 

(3)、引入相关jar

Maven项目:

直接引入apollo-client依赖

<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>0.11.0-SNAPSHOT</version>
</dependency>

普通java项目:

可以将编译后的jar直接丢进项目的lib目录。可以在maven私服里找到后下载,注意是com.ctrip.framework.apollo下个apollo-client,以及client依赖的apollo-core和其他的一些工具jar,具体如下图:

图片.png

 

到此,客户端的配置就完成了。

配置的使用

参考《java客户端使用指南中的客户端用法》,里面介绍的比较详细。

原来就使用spring的情况下,大部分是不用改什么。

本地缓存路径

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 

文件内容以properties格式存储,比如如果有两个key,一个是request.timeout,另一个是batch,那么文件内容就是如下格式:

request.timeout=2000

batch=2000

启动项目看下能否将配置文件从配置中心拉下来.

如果能拉下来则配置就成功了,不能则需检查前面的配置。

 

需要注意的一点是:

当类上使用@Configuration注解,则一定要注解@EnableApolloConfig一起使用,才可以生效。

就是说,所有需要在应用初始化之前获取变量的类上,都要加上此注解。

 


评论

*
*