Apollo 配置中心 java 配置

简介

Apollo架构模型简单点如下图:他的用户分两类,一类相当于管理员(运维人员)往其中写入配置,一类为客户端(微服务)往配置拉取配置。
todo:流程图片

java 整合Apollo配置中心

1.添加Maven依赖

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

注意:若版本小于1.6.0 则无法识别apollo密钥

2.配置文件

在这里插入图片描述

3.配置说明

app.id:在配置中心配置的应用身份信息。
apollo.bootstrap.enabled:在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息。
apollo.bootstrap.eagerLoad.enabled:将Apollo配置加载提到初始化日志系统之前。
apollo.bootstrap.namespaces:配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件。
**apollo.meta:**当前环境服务配置地址,生产环境建议至少双节点,可以填写多个逗号分隔,使用一个单独的域,如 http://config.xxx.com(由nginx等软件负载平衡器支持),而不是多个IP地址,因为服务器可能会扩展或缩小。
apollo.accesskey.secret: *********************************** // 密钥
图示说明:
在这里插入图片描述

添加启动类配置

在这里插入图片描述

使用@Value 注解 获取配置

配置好apollo 之后可以通过@Value注解获取配置内容,如上图所示:我在配置文件中并未配置stage.admin 但我通过连接apollo配置中心,在上面新增stage.admin 并发布该配置,就可以获取到stage.admin 的属性值;

测试

在这里插入图片描述
通过接口测试获取内容如下:
在这里插入图片描述
当变动对应环境的配置属性值:
在这里插入图片描述
再次运行接口得以下结果:
在这里插入图片描述

可视化管理页面的使用

1.创建项目

在这里插入图片描述

在这里插入图片描述

2.创建namespaces

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.添加配置

3.1 单个配置

在这里插入图片描述

3.2 批量添加

在这里插入图片描述

3.3 发布配置

新增/修改/删除的配置 只有发布了才会生效
在这里插入图片描述

多环境同步配置

在这里插入图片描述
如上图所示 ,database-admin 的项目在dev 的环境上发布过"test-user",“test-admin"和"test-config” 的配置项,但PRO的环境并未配置,可通过dev环境同步配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
确认同步:
在这里插入图片描述
同步结束后:
在这里插入图片描述
发布后PRO环境的配置也会生效


20221104 补充:

当Apollo服务启用时,会在本地生成缓存的配置文件 :
windows缓存文件地址:
C:\opt\data{appId}\config-cache
linux/mac缓存文件地址:
/opt/data/{appId}/config-cache
因为存在缓存的配置文件,当apollo服务停止时,并不会影响程序运行,程序会从缓存的配置文件中读取相应的配置

注意:
1.当 Apollo 服务停止后,若想直接修改缓存的配置文件是没有用的,必须在Apollo 中对该配置 修改发布 才会生效。
2. 在JAVA 中对配置文件中的配置读取可以使用
*@Value()** 注解,若没有使用Apollo配置的情况
下,当application.yml 配置文件中存在该配置,@Value 注解不需要携带默认值 如:
user.name: zhangsan
这种情况下可以直接使用@Value("${user.name}") 若没有则@Value("${user.name:zhangsan}")
但若程序配置了Apollo 配置中 并且在Apollo 配置中心配置了 user.name: zhangsan 即使在application.yml 中未配置 user.name: zhangsan 这种情况也可以直接使用@Value("{user.name}")否则需要携带默认值即@Value("${user.name:zhangsan}")
【在程序中,Apollo的优先级高于application.yml】

Logo

为开发者提供自动驾驶技术分享交流、实践成长、工具资源等,帮助开发者快速掌握自动驾驶技术。

更多推荐