Apollo配置中心
Apollo配置中心
1.什么是配置中心
-
首先讲讲什么是配置
一般来说,一个系统从发布到最终呈现给用户的步骤是先从配置文件中读取配置,诸如数据库连接池配置、线程池配置、还有与其他系统交互时需要的相关参数等等。因为我们的程序不可能做到太死板,总要留一些可以随程序运行而动态改变的参数,也可以理解为通过这些配置,我们可以在程序里动态的控制程序 运行时的状态。比如在配置a下的行为,在配置b下的行为。用一个比较专业点的词来说,也就是系统运行时(runtime)飞行姿态的动态调整
举个例子,如我们在程序中配置key-value类型的开关,我们就可以通过开关来控制程序是否要执行指定的业务逻辑。典型的例子是日志级别,我们开发和生产环境中的日志级别可能不一样,开发中我们需要看到更多的日志信息,因此可以设置logLevel=info,但在生产中可能就是debug或者warn级别的了。
早期都是通过配置文件来读取配置的,需要的配置都在文件中直接添加诸如config-key=config-value这种方式对于集中式开发来说还是比较方便的,如果需要修改配置,只需编辑配置文件后重启服务即可。然而随着目前分布式、微服务架构的崛起。配置文件似乎已经不那么实用了,一次上线可能涉及到多台机器的打包、重启,大型系统甚至有上千万的机器,其中的耗时可想而知,远不是单机时代发布一下就能解决的。如何保证在分布式集群中不停机,保持系统运行时的飞行姿态,这就是配置中心要解决的问题了。
配置有以下的属性:
-
配置是独立于程序的只读变量
– 配置独立于程序,同一个程序在不同配置下有不同的行为
–程序可以根据配置更改自己的行为,但一般不可以更改配置 -
配置伴随应用的整个生命周期
– 程序在启动时根据配置进行初始化,在运行时根据配置来决定行为 -
配置可以有多种加载方式
– 如配置文件、环境变量、启动参数等 -
配置需要治理
– 权限控制
– 不同集群治理
例如不同集群、开发、测试、生产环境配置不同,不同数据库实例配置不同
– 框架