什么是配置?
我们的应用程序在启动和运行的时候往往会读取一些配置信息,并且这些配置信息往往会伴随着应用程序的整个声明周期。比方说数据库连接参数等等。
配置的主要特点
配置是独立于程序的只读变量:程序可以读取配置来改变自己的行为但是不能改变配置的内容。
配置是伴随整个生命周期:应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。
配置可以有很多种加载形式:常见的有程序内部的Hard Code,配置文件,环境变量,启动参数等等。
配置需要治理:同一份程序在不同的环境,不同的集群经常需要用不同的配置。所以需要有完善的集群环境,集群配置管理。
什么是配置中心?
在微服务架构中,当一个系统从从一个单体应用被分割为多个微服务的时候,它的配置也会随着分割,这样配置就分散了。不仅如此,分散中还存在着大量的冗余,大量的重复的配置重复。
而配置中心将配置从应用中剥离出来,对配置统一进行管理,应用不用自己取管理配置,只需要从配置中心去拉取配置就行。
配置中心的流程
1、用户在配置中心发布、更新配置信息。
2、服务A和服务B及时得到配置更新通知,从配置中心获取配置
为什么需要配置中心?
随着微服务的发展,服务的节点越来越多,那么很多问题就逐渐浮现出来。比方说随着程序的功能日益复杂,程序的配置日益增多,各种功能的开关,参数的配置,服务的地址等等、大量的模块使用各自的配置,维护起来极其麻烦,管理混乱各个节点文件不一致。并且大家现在对配置的期望越来越高,配置修改后即时生效,灰度法度,版本管理,环境区分等等。
这样配置中心就应运而生。
常见的配置中心有:
Disconf
2014年7月,百度开源的配置管理中心,同样具备配置的管理能力,不过目前已经不维护了 。
Spring Cloud Config
2014年9月,Spring Cloud 开源生态组件,可以和Spring Cloud体系无缝整合,但依赖Git或SVN 。
Apollo
2016年5月,携程开源的配置管理中心,具备规范的权限、流程治理等特性。
Nacos
2018年6月,阿里开源的配置中心,也可以做RPC的服务发现。