现在的位置: 首页 > 算法 > 正文

Config 是什么?为什么要使用进行配置管理?

2020年02月12日 算法 ⁄ 共 988字 ⁄ 字号 评论关闭

  为什么要使用进行配置管理?

  当我们的微服务系统开始慢慢地庞大起来,那么多 Consumer、Provider、Eureka Server、Zuul 系统都会持有自己的配置,这个时候我们在项目运行的时候可能需要更改某些应用的配置,如果我们不进行配置的统一管理,我们只能去每个应用下一个一个寻找配置文件然后修改配置文件再重启应用。

  首先对于分布式系统而言我们就不应该去每个应用下去分别修改配置文件,再者对于重启应用来说,服务无法访问所以直接抛弃了可用性,这是我们更不愿见到的。

  那么有没有一种方法既能对配置文件统一地进行管理,又能在项目运行时动态修改配置文件呢?

  那就是我今天所要介绍的 Spring Cloud Config。

  能进行配置管理的框架不止 Spring Cloud Config 一种,大家可以根据需求自己选择(Disconf,阿波罗等等)。而且对于 Config 来说有些地方实现的不是那么尽人意。

  Config 是什么

  Spring Cloud Config 为分布式系统中的外部化配置提供服务器和客户端支持。使用 Config 服务器,可以在中心位置管理所有环境中应用程序的外部属性。

  简单来说,Spring Cloud Config 就是能将各个 应用/系统/模块 的配置文件存放到 统一的地方然后进行管理(Git 或者 SVN)。

  你想一下,我们的应用是不是只有启动的时候才会进行配置文件的加载,那么我们的 Spring Cloud Config 就暴露出一个接口给启动应用来获取它所想要的配置文件,应用获取到配置文件然后再进行它的初始化工作。就如下图:

  当然这里你肯定还会有一个疑问,如果我在应用运行时去更改远程配置仓库(Git)中的对应配置文件,那么依赖于这个配置文件的已启动的应用会不会进行其相应配置的更改呢?

  答案是不会的。

  什么?那怎么进行动态修改配置文件呢?这不是出现了配置漂移吗?你个渣男,你又骗我!

  别急嘛,你可以使用 Webhooks ,这是 GitHub 提供的功能,它能确保远程库的配置文件更新后客户端中的配置信息也得到更新。

  噢噢,这还差不多。我去查查怎么用。

  慢着,听我说完,Webhooks 虽然能解决,但是你了解一下会发现它根本不适合用于生产环境,所以基本不会使用它的。

  而一般我们会使用 Bus 消息总线 + Spring Cloud Config 进行配置的动态刷新。

抱歉!评论已关闭.