10-分布式架构设计六(配置中心)
xiangliheart
xiangliheart
发布于 2022-02-20 / 7 阅读 / 0 评论 / 0 点赞

10-分布式架构设计六(配置中心)

配置中心

微服务代表更细粒度的拆分,各个服务都有自己的配置文件(如Spring Boot的yml或properties文件),这些配置文件需要在项目启动时加载,或者在程序的运行过程中被加载。一旦文件发生变化,就代表着所有的微服务都需要重启,不能够动态地修改参数值。如果是传统的烟囱式架构或粗粒度SOA架构,重启还是可以接受的,但是对于庞大的微服务架构,节点数量众多,重启就会十分麻烦。因此,微服务架构将所有的配置抽象为一个服务,称为配置中心。

微服务配置中心原理如图3-30所示。配置中心也是一个微服务,与其他服务一样在启动时会发送注册请求到注册中心。其他微服务与配置中心建立连接,在启动或运行时从配置中心拉取配置文件信息,放置在内存中。

图3-30 微服务配置中心原理

配置中心多环境支持架构如图3-31所示。服务A、B启动时分别加载不同的配置文件(服务A加载A-dev.yml开发环境文件,服务B加载B-

prod.yml生产环境文件)。 配置中心支持多环境配置文件,例如,可以将开发、生产、测试配置文件放在配置中心中管理,在程序启动时指定激活哪个环境,则自动拉取该环境的文件。

图3-31 配置中心多环境支持架构

有一些配置中心服务(如Spring Cloud Config)可以与Git或SVN等版本管理工具集成使用,从而对配置文件达到版本管理的目的,如图332所示。而有一些配置中心服务(如阿里巴巴的Nacos)则自身具有版本管理功能。

图3-32 配置中心集成版本管理

通过Git、SVN等可以有效管理配置文件的版本,修改轨迹,以及回滚。通过Webhook的通知机制,可以在提交配置之后,自动通知配置中心进行配置文件的刷新。

配置中心主要带来如下3点好处。

(1)     集中管理:通过这种方式可以实现所有的配置文件集中管理,当修改配置后能够实时生效,不需要再到每个微服务中逐一修改,再逐一发布。还可以很方便地对配置文件进行版本控制。

(2)     配置安全:能够增强系统配置的安全性。例如,将数据库用户名、密码都放在程序的配置文件中,所有人都可以使用,而放置在配置中心中,通过权限管理,只有管理员才可以查看和修改。

(3)     动态调整:可以动态调整系统参数并实时生效,如随时开启和关闭日志等。

主流的配置中心组件有Nacos、Spring Cloud Config、Consul、Apollo、XDiamond、Qconf、Disconf等。其中Nacos和Consul已经将注册中心与配置中心合并为同一个服务,这也是一种发展趋势。


评论