上QQ阅读APP看书,第一时间看更新
2.1.5 服务配置的统一管理
在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置、日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的。随着服务数量的增加,配置文件的管理也是一件非常复杂的事。
在微服务架构中,需要有统一管理配置文件的组件,例如Spring Cloud的Spring Cloud Config组件、阿里巴巴的Diamond、百度的Disconf、携程的Apollo等。这些配置组件所实现的功能大体相同,但是又有些差别,下面以Spring Cloud Config为例来阐述服务配置的统一管理。
如图2-7所示,大致过程如下。
•首先,Config Server(配置服务)读取配置文件仓库的配置信息,其中配置文件仓库可以存放在配置服务的本地仓库,也可以放在远程的Git仓库(例如GitHub、Coding等)。
•配置服务启动后,读取配置文件信息,读取完成的配置信息存放在配置服务的内存中。
•当启动服务A、B时,由于服务A、B指定了向配置服务读取配置信息,服务A、B向配置服务读取配置信息。
•当服务的配置信息需要修改且修改完成后,向配置服务发送Post请求进行刷新,这时服务A、B会向配置服务重写读取配置文件。
▲图2-7 服务配置统一管理
对于集群化的服务,可以通过使用消息总线来刷新多个服务实例。如果服务数量较多,对配置中心需要考虑集群化部署,从而使配置中心高可用,做分布式集群。