配置管理原则
对于存在几百个微服务的设计中,简单的将配置文件放到一个单独文件是不明智的。
微服务实例需要的是以最小的人为干预快速启动,如果配置需要手动配置,那么伸缩性就无法得到保证了。
分离
配置和实际的物理部署分离 , 使用环境变量注入配置 , 或者集中式存储库管理配置
抽象
将访问配置的功能抽象到一个服务接口里面,而不是在服务里面写访问配置文件的逻辑。不要直接硬编码。 这样对于这个服务接口,可以扩展和做统一管理。
集中
配置应该集中在尽可能少的服务里面
稳定
配置服务和部署服务应该完全隔离,高可用和冗余
成熟的配置管理方案
上述的配置基本就是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