具有Consul的分布式配置

优质
小牛编辑
130浏览
2023-12-01

Consul提供了一个用于存储配置和其他元数据的键/值存储。Spring Cloud Consul Config是Config Server和Client的替代方案。在特殊的“引导”阶段,配置被加载到Spring环境中。默认情况下,配置存储在/config文件夹中。基于应用程序的名称和模拟解析属性的Spring Cloud Config顺序的活动配置文件创建多个PropertySource实例。例如,名为“testApp”的应用程序和“dev”配置文件将创建以下属性源:

config/testApp,dev/
config/testApp/
config/application,dev/
config/application/

最具体的物业来源位于顶部,底部最不具体。Properties是config/application文件夹适用于使用consul进行配置的所有应用程序。config/testApp文件夹中的Properties仅适用于名为“testApp”的服务实例。

配置当前在应用程序启动时被读取。发送HTTP POST到/refresh将导致配置被重新加载。观看关键价值商店(Consul支持))目前不可能,但将来将是此项目的补充。

如何激活

要开始使用Consul配置,请使用组org.springframework.cloud和artifact id spring-cloud-starter-consul-config的启动器。有关使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面

这将启用自动配置,将设置Spring Cloud Consul配置。

定制

Consul可以使用以下属性定制配置:

bootstrap.yml
spring:
  cloud:
  consul:
   config:
    enabled: true
    prefix: configuration
    defaultContext: apps
    profileSeparator: '::'
  • enabled将此值设置为“false”禁用Consul配置
  • prefix设置配置值的基本文件夹
  • defaultContext设置所有应用程序使用的文件夹名称
  • profileSeparator设置用于使用配置文件在属性源中分隔配置文件名称的分隔符的值

配置观察

Consul配置观察功能可以利用领事看守钥匙前缀的能力。Config Watch会阻止Consul HTTP API调用,以确定当前应用程序是否有任何相关配置数据发生更改。如果有新的配置数据,则会发布刷新事件。这相当于调用/refresh执行器端点。

要更改Config Watch调用的频率change spring.cloud.consul.config.watch.delay。默认值为1000,以毫秒为单位。

禁用配置观察集spring.cloud.consul.config.watch.enabled=false

YAML或Properties配置

与单个键/值对相反,可以更方便地将YBL或Properties格式的属性块存储起来。将spring.cloud.consul.config.format属性设置为YAMLPROPERTIES。例如使用YAML:

bootstrap.yml
spring:
  cloud:
  consul:
   config:
    format: YAML

YAML必须在合适的data键中设置。使用键上面的默认值将如下所示:

config/testApp,dev/data
config/testApp/data
config/application,dev/data
config/application/data

您可以将YAML文档存储在上述任何键中。

您可以使用spring.cloud.consul.config.data-key更改数据密钥。

git2consul与配置

git2consul是一个Consul社区项目,将文件从git存储库加载到各个密钥到Consul。默认情况下,密钥的名称是文件的名称。YAML和Properties文件分别支持.yml.properties的文件扩展名。将spring.cloud.consul.config.format属性设置为FILES。例如:

bootstrap.yml
spring:
  cloud:
  consul:
   config:
    format: FILES

给定/config中的以下密钥,development配置文件和应用程序名称为foo

.gitignore
application.yml
bar.properties
foo-development.properties
foo-production.yml
foo.properties
master.ref

将创建以下属性来源:

config/foo-development.properties
config/foo.properties
config/application.yml

每个键的值需要是一个格式正确的YAML或Properties文件。

快速失败

在某些情况下(如本地开发或某些测试场景)可能会方便,如果不能配置领事,则不会失败。在bootstrap.yml中设置spring.cloud.consul.config.failFast=false将导致配置模块记录一个警告而不是抛出异常。这将允许应用程序继续正常启动。