外部配置



问题陈述

微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,从而实现持续交付/部署。这些服务通常与基础设施服务或第三方服务交互。

基础设施服务可能包括服务注册表、消息代理、数据库服务器。第三方服务可以是支付服务、电子邮件服务、消息服务。除了不同的服务之外,环境也经常不同。考虑以下情况:

  • 配置数据 - 应向微服务提供对外部/第三方服务的配置,例如数据库凭据、网络 URL 等。

  • 多个环境 - 通常存在不同的环境,例如开发、测试、预发布和生产环境。服务应该能够在每个环境中部署,而无需任何代码修改。

  • 不同的配置数据 - 对外部/第三方服务的配置在开发环境到生产环境之间也各不相同,例如开发数据库到生产数据库,测试支付处理器与原始支付处理器服务。

解决方案

我们可以将所有配置(从数据库凭据到网络 URL)都外部化。服务将在启动时读取配置数据,例如从属性文件/系统环境变量或使用命令行参数。此模式有助于部署微服务,无需任何修改/重新编译。

广告