前言
项目用的springboot,连带着配置中心也一直用的spring的配置中心,但是一直以来都有各种问题:
- 每次变更配置要重启配置中心和应用;
- 各个环境集群的配置文件在不同分支,每个环境要分别手动同步,容易遗漏;
- 无法确定当前应用是否重启过,读取的是最新配置。
当然,个人觉得最重要的就是需要重启应用这个,简直就是浪费时间,浪费时间就是浪费生命啊。虽然spring也提供@RefreshScope这个注解来动态更新配置,但是用起来不是很方便,而且不能对散落在代码各处的配置统一处理,对老代码也无能为力,头大。
可能大家忍受够了,运维推了一个apollo配置中心来替换spring的配置中心,主打配置实时同步,真是直击程序员最深处心灵,皆大欢喜。正好以前也看过某位大神的分析,相比较他也是推荐apollo的,所以这边马上就红红火火的切换起来了。
过程
导client的jar包,做一些基本的配置,线上环境的启动参数运维会处理,这边方便本地启动会在配置文件中加一些配置:
项目resource 目录下增加 META-INF/app.properties 文件,文件中增加如下内容
app.id=web-admin
# 这里填上用于本地,线上运维会覆盖
apollo.meta=http://172.16.101.11:8080
# 配置的本地缓存目录,这行也可不配置,不配Apollo有默认值target/classes/config-cache
apollo.cacheDir=/opt/data/apollo-config
项目 resource 目录下增加 application.properties 文件, 文件中增加
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=application,dev.common
"application", "dev.common" 为 应用配置 的n

文章讲述了在项目中从Spring配置中心切换到Apollo配置中心的过程中遇到的问题,包括@ConfigurationProperties注解的配置类无法实时更新。作者发现Apollo的实时同步功能默认不开启,并需要配合EnvironmentChangeEvent或RefreshScope使用。在解决这个问题后,提醒其他开发者注意从Spring到Apollo迁移时的配置更新行为。此外,还提到了JRebel热加载导致Apollo事件监听器列表增长的问题。

5778

被折叠的 条评论
为什么被折叠?



