Spring Cloud配置中心获取不到最新配置信息的问题

本篇源于Spring Cloud Config的一个问题,但这个问题并非所有人都会遇到。如果您遇到了,那必须得看看这篇,如果没有遇到您也应该看看,防患于未然!

问题描述

之前有朋友提出Spring Cloud Config的配置中心在运行一段时间之后,发现修改了配置信息,但是微服务应用并拿不到新的配置内容。同时,发现配置中心存储配置的目录 /tmp 的配置内容被清空了。

原因与解决

首先,分析一下上面的问题,其实已经有一定的线索。表面现象是微服务从配置中心获取配置信息的时候获取不到最新的配置,而其根本原因就是在 /tmp目录下的缓存仓库已经被清空了,所以导致无法正常的通过Git获取到最新配置,那么自然各个微服务应用就无法获取最新配置了。

其实该问题在Spring Cloud的官方文档中也有对应的说明,原文如下:

With VCS based backends (git, svn) files are checked out or cloned to the local filesystem. By default they are put in the system temporary directory with a prefix of config-repo-. On linux, for example it could be /tmp/config-repo-<randomid>. Some operating systems routinely clean out temporary directories. This can lead to unexpected behaviour such as missing properties. To avoid this problem, change the directory Config Server uses, by setting spring.cloud.config.server.git.basedir or spring.cloud.config.server.svn.basedir to a directory that does not reside in the system temp structure.

根据上面的内容,我们可以知道在某些系统中,对于 /tmp目录进行周期性的清理,所以也就有了上面所说的问题。

从文档中我们也已经知道如果去解决该问题,无非就是通过 spring.cloud.config.server.git.basedirspring.cloud.config.server.svn.basedir参数来指定一个不会被定期清理的目录。比如,我们可以设置:

spring.cloud.config.server.git.basedir=config-repo

其他问题

这里需要注意一下,该参数的设置依然有一定的问题。按理解,如上配置的话,应该是在配置中心程序所在的目录下创建一个config-repo目录来进行存储。但是,在测试了Dalston SR1和SR2版本之后,发现该配置只会将内容存储到配置中心程序的同一级目录下,并不会创建一个config-repo目录。

但是,如果我们这样设置,就可以将配置的缓存内容存储在配置中心所在目录下的config-repo目录中了:

spring.cloud.config.server.git.basedir=config-repo/config-repo

原文发布于微信公众号 - 程序猿DD(didispace)

原文发表时间:2017-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏破晓之歌

jupyter、pyenv、virtualenv、virtualenvwrapper简要区别

在创建一个新的python版本时,完全拷贝一个现成的python环境。新的python版本,可作为global

11840
来自专栏编程微刊

html替换成jsp界面字体图标不显示问题

今天写个简单的bug问题,这个问题一开始困扰我很久,后来后台来轻松的解决了这个问题,方法简单粗暴。

15430
来自专栏猿天地

Spring Cloud Eureka 增加权限认证

上篇文章我们简单的介绍了下注册中心Eureka,文章地址:http://cxytiandi.com/blog/detail/11988 Eureka自带了一个w...

41080
来自专栏bboysoul

如何去高大上的下载电影天堂的内容

找过电影资源的人肯定都知道电影天堂这个网站,只要复制上面的链接就可以下载对应的电影。但是一个一个链接点,太麻烦了,如何去批量做,这个时候就要用到爬虫了

11320
来自专栏小怪聊职场

Jenkins+Git+Maven+Tomcat8配置web自动构建环境(拉代码、编译、打包、部署)

27240
来自专栏软件工程师成长笔记

CentOS7安装OracleJDK和JRE

JDK(Java Development Kit)指的是Java开发工具集。JDK是整个Java的核心,包括了Java基础类库、Java运行环境(JRE)和Ja...

45530
来自专栏有困难要上,没有困难创造困难也要上!

制作可自运行的jar可执行文件

今天看到有人把Java的jar包制作成一个可执行文件,于是乎我也试了一把,确实也挺简单的,记录一下。

11640
来自专栏流媒体

Android Studio 更新后Gradle问题

重新安装了Android studio 之后, 启动android studio,打开原来的项目,界面一直停留在:

8740
来自专栏Android相关

Gradle For Android(5)--管理多Module的编译

通常一个多Module的工程会有一个根目录,而它的子目录下包含了所有的Module。为了告诉Gradle这个Project的结构,这个目录下包含了所有要构建的M...

20330
来自专栏北京马哥教育

一图掌握bash shell编程

? 一张图掌握bash shell编程, 总结自 The Linux Command Line Ch25~Ch37. PDF版本下载请查看: 链接: http...

33680

扫码关注云+社区

领取腾讯云代金券