|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring Cloud Config 5.0.1! |
复合环境仓库
在某些场景中,您可能希望从多个环境存储库中提取配置数据。要实现这一点,您可以在配置服务器的应用程序属性文件或 YAML 文件中启用 composite 配置文件。例如,如果您希望从一个 Subversion 存储库以及两个 Git 存储库中提取配置数据,您可以为配置服务器设置以下属性:
spring:
profiles:
active: composite
cloud:
config:
server:
composite:
-
type: svn
uri: file:///path/to/svn/repo
-
type: git
uri: file:///path/to/rex/git/repo
-
type: git
uri: file:///path/to/walter/git/repo
使用此配置,优先级由在 composite 键下列出的仓库顺序决定。在上面的例子中,Subversion 仓库首先列出,因此在 Subversion 仓库中找到的值将覆盖在任一 Git 仓库中找到的相同属性的值。在 rex Git 仓库中找到的值将在 walter Git 仓库中找到的相同属性的值之前被使用。
如果您只想从每个都是不同类型的存储库中拉取配置数据,可以在配置服务器的应用程序属性或 YAML 文件中启用相应的作用域(profiles),而不是 composite 作用域。
例如,如果您希望从单个 Git 存储库和单个 HashiCorp Vault 服务器中拉取配置数据,可以为您的配置服务器设置以下属性:
spring:
profiles:
active: git, vault
cloud:
config:
server:
git:
uri: file:///path/to/git/repo
order: 2
vault:
host: 127.0.0.1
port: 8200
order: 1
使用此配置,可以通过 order 属性确定优先级。您可以使用 order 属性来为所有存储库指定优先级顺序。该 order 属性的数值越小,其优先级越高。存储库的优先级顺序有助于解决可能存在于多个存储库中且包含相同属性值时的冲突问题。
| 如果您的复合环境包含如上一个示例中所述的 Vault 服务器,则必须在向配置服务器发出的每个请求中包含一个 Vault Tokens。参见 Vault 后端。 |
| 从环境仓库中检索值时发生的任何类型故障都会导致整个复合环境失败。 如果您希望即使某个仓库失败,复合环境仍能继续运行,您可以将 |
| 在使用复合环境时,重要的是所有存储库都包含相同的标签。 如果您拥有与前述示例中类似的环境,并且您请求带有 |
自定义复合环境仓库
除了使用 Spring Cloud 中的一个环境仓库外,您还可以提供自己的 EnvironmentRepository Bean,将其作为复合环境的一部分包含进来。要实现这一点,您的 Bean 必须实现 EnvironmentRepository 接口。如果您希望控制自定义 EnvironmentRepository 在复合环境中的优先级,还应实现 Ordered 接口,并重写 getOrdered 方法。如果您未实现 Ordered 接口,则您的 EnvironmentRepository 将被赋予最低优先级。