简介
在项目中,我们可以简单的理解程序=代码+配置。代码这个没什么好说的,你懂的,对于配置来说,由于我们需要对程序中的一些参数进行自定义配置,不想直接硬编码在代码中,方便以后更改,使得系统具有良好的拓展性,为此可以将一些信息写入配置文件(数据库连接、日志配置、系统环境、系统常用参数等),其实说白了,可以将配置文件理解为一个小型的数据库,存储信息,然后程序可以读取使用。
图片发自简书App
举个配置的简单使用例子,系统上线后日志级别默认为INFO,突然某一天系统出问题了,访问不正常了,我们想查看更多的日志信息,于是可以将日志输出级别动态地调整为DEBUG或TRACE级别,而无需重启应用,相信这样会很容易理解配置的作用。
在单体应用中,多多少少都存在配置文件,以常见的Spring应用来说,大家立马会想到application.xml、log4j.properties等文件,可以方便地进行配置。但是,在微服务架构体系中,由于微服务众多(成百上千,如下图),服务之间又有互相调用关系,这个微服务怎么知道被调用微服务的地址呢,万一被调用微服务地址变了咋办?我们如何方便地进行修改,且实时自动刷新,而不至于需要重启应用。也就是说,微服务的配置管理需要解决以下几个问题:
1.配置集中管理:统一对应用中各个微服务进行管理。
2.在系统运行期间可动态配置:根据系统运行情况(微服务负载情况等)进行配置调整,在不停止服务的情况下。
3.配置修改自动刷新:当修改配置后,能够支持自动刷新。
所以,对于微服务架构而言,一个通用的分布式配置管理是必不可少的。在大多数微服务系统中,都会有一个名为配置文件的功能模块来提供统一的分布式配置管理。
图片发自简书App
图片发自简书App配置管理中心(Spring Cloud Config)
在目前的配置中心解决方案里,有Spring Cloud Config、disconf等等,这两种都与Spring框架