Apollo整合SpringBoot

项目依赖

在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种方式设置,按照优先级从高到底分别为:

  1. System Property

    通过System Property传入app.id信息,如:-Dapp.id=YOUR-APP-ID

  2. Spring Boot application.properties

    通过Spring Boot的application.properties文件配置,如:app.id=YOUR-APP-ID

  3. 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信息,按照优先级从高到低分别为:

  1. 通过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
    • 通过程序指定,如System.setProperty("apollo.meta", "http://config-service-url");
  2. 通过Spring Boot的配置文件

    • 可以在Spring Boot的application.propertiesbootstrap.properties中指定

      apollo.meta=http://config-service-url
      
  3. 通过操作系统的System EnvironmentAPOLLO_META

    • 可以通过操作系统的System Environment APOLLO_META来指定
    • 注意key为全大写,且中间是_分隔
  4. 通过server.properties配置文件

    • 可以在server.properties配置文件中指定apollo.meta=http://config-service-url
    • 对于Mac/Linux,文件位置为/opt/settings/server.properties
    • 对于Windows,文件位置为C:\opt\settings\server.properties
  5. 通过app.properties配置文件

    • 可以在classpath:/META-INF/app.properties指定apollo.meta=http://config-service-url
  6. 通过Java system property ${env}_meta

    • 如果当前env是dev,那么用户可以配置-Ddev_meta=http://config-service-url
    • 使用该配置方式,那么就必须要正确配置Environment
  7. 通过操作系统的System Environment ${ENV}_META (1.2.0版本开始支持)

    • 如果当前env是dev,那么用户可以配置操作系统的System Environment DEV_META=http://config-service-url
    • 注意key为全大写
    • 使用该配置方式,那么就必须要正确配置Environment
  8. 通过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/dataC:\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版本开始支持以下方式自定义缓存路径,按照优先级从高到低分别为:

  1. 通过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
    • 也可以通过程序指定,如System.setProperty("apollo.cacheDir", "/opt/data/some-cache-dir");
  2. 通过Spring Boot的配置文件
    • 可以在Spring Boot的application.propertiesbootstrap.properties中指定apollo.cacheDir=/opt/data/some-cache-dir
  3. 通过操作系统的System EnvironmentAPOLLO_CACHEDIR
    • 可以通过操作系统的System Environment APOLLO_CACHEDIR来指定
    • 注意key为全大写,且中间是_分隔
  4. 通过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种方式的任意一个配置:

  1. 通过Java System Property

    • 可以通过Java的System Property env来指定环境
    • 在Java程序启动脚本中,可以指定-Denv=YOUR-ENVIRONMENT
      • 如果是运行jar文件,需要注意格式是java -Denv=YOUR-ENVIRONMENT -jar xxx.jar
    • 注意key为全小写
  2. 通过操作系统的System Environment

    • 还可以通过操作系统的System Environment ENV来指定
    • 注意key为全大写
  3. 通过配置文件

    • 最后一个推荐的方式是通过配置文件来指定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集成
  1. 在springboot项目的启动类加上 @Configuration、@EnableApolloConfig 注解

在这里插入图片描述

  1. 在Apollo配置中心新建项目
    • AppId与前面springboot项目配置的AppId保持一致
  2. 把原先配置(必须是properties格式)复制一下,然后通过Apollo提供的文本编辑模式全部粘帖到应用的application namespace,发布配置

20181214095806192.png

  1. 把原先的配置文件如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
  1. 启动SpringBoot项目

参考文章:https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值