一、配置的了解
- 在项目开发过程中,我们经常会把配置放到properties或yaml或xml文件中,或者放到数据库的配置表中,或者硬编码在代码中,再或者是放到配置中心中等等。
二、配置需要具备的特性
- 在应用程序的启动和运行中,再对这些配置进行解析和加载。那么,如果对这些不同场景下的不同配置进行总结的话,我们可以针对“配置”归纳出来一下几个主要的特性:
- A)、独立于程序的只读信息
配置对于运行中的程序来说,应该是只读的,而不应该是程序可以对其进行修改的。 - B)、伴随着程序的整个生命周期
随着程序的启动对配置进行加载,随着程序的消亡而使配置失效。在程序的整个生命周期中,配置与程序都是“相依为伴”的 - C)、可以有多种配置和加载方式
可以把配置写在配置文件中、数据库中、硬编码在代码中等等。 - D)、是需要对配置进行治理的
同一份程序在不同的环境 (如:开发、测试、生产)、不同的集群(如:不同的数据中心)经常需要有不同的配置,所以需要有完善的环境,集群配置管理。
二、配置中心是什么
- 在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了。不仅如此,分散中还伴随着冗余,如下图所示:
- 创建配置中心,将配置从各个应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。如下图所示:
- 配置中心的服务流程如下所示:
1)、用户在配置中心更新配置信息。
2)、服务群及时得到配置更新通知,从配置中心获取最新配置。 - 总体来说,配置中心就是一种统一管理各种应用配置的基础服务组件。
- 在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,它的功能看上去并不起眼,无法就是配置的管理和存取,但它是整个微服务架构中不可或缺的一环。如下图所示:
- 总结一下,在传统巨型单体应用纷纷转向细粒度微服务架构的历史进程中,配置中心是微服务化不可缺少的一个系统组件,在这种背景下,中心化的配置服务——配置中心,应运而生;一个合格的配置中心需要满足如下特性:
1)、配置项容易读取和修改
2)、分布式环境下,应用配置的可管理性,即:提供远程管理配置的能力
3)、支持对配置修改的监视以把控风险
4)、可以查看配置修改的历史记录
5)、不同部署环境下应用配置的隔离性
6)、配置项容易读取和修改