配置管理原则

对于存在几百个微服务的设计中,简单的将配置文件放到一个单独文件是不明智的。

微服务实例需要的是以最小的人为干预快速启动,如果配置需要手动配置,那么伸缩性就无法得到保证了。

分离

配置和实际的物理部署分离 , 使用环境变量注入配置 , 或者集中式存储库管理配置

抽象

将访问配置的功能抽象到一个服务接口里面,而不是在服务里面写访问配置文件的逻辑。不要直接硬编码。 这样对于这个服务接口,可以扩展和做统一管理。

集中

配置应该集中在尽可能少的服务里面

稳定

配置服务和部署服务应该完全隔离,高可用和冗余


成熟的配置管理方案

上述的配置基本就是K-V 结构,开源的有很多的键值对管理

Etcd - raft 协议

Eureka - 服务发现和键值管理

Consul - swim 协议

ZooKeeper

Spring Cloud Config : 通用配置管理方案,可以自己选择配置架构方案

参考文档

https://docs.spring.io/spring-cloud-config/docs/current/reference/html/#_spring_cloud_config_server