74. 使用 Zookeeper 分发 Configuration
Zookeeper 提供分层命名空间,允许 clients 存储任意数据,例如 configuration 数据。 Spring Cloud Zookeeper Config 是配置服务器和 Client的替代品。 Configuration 在特殊的“bootstrap”阶段加载到 Spring 环境中。 Configuration 默认存储在/config
命名空间中。基于 application 的 name 和 active profiles 创建了多个PropertySource
实例,这些实例模仿解析 properties 的 Spring Cloud Config order。对于 example,name“testApp”和“dev”profile 的 application 将创建以下 property 源:
config/testApp,dev
config/testApp
config/application,dev
config/application
最具体的 property 源位于顶部,底部最不具体。 Properties 是config/application
名称空间适用于使用 zookeeper 进行 configuration 的所有 applications。 config/testApp
名称空间中的 Properties 仅可用于名为“testApp”的服务的实例。
Configuration 目前在启动 application 时读取。将 HTTP POST 发送到/refresh
将导致重新加载 configuration。观察 configuration 命名空间(Zookeeper 支持)目前尚未实现,但将成为此项目的未来添加项。
74.1 如何激活
包含对org.springframework.cloud:spring-cloud-starter-zookeeper-config
的依赖将启用 auto-configuration,这将设置 Spring Cloud Zookeeper 配置。
74.2 自定义
可以使用以下 properties 自定义 Zookeeper 配置:
bootstrap.yml.
spring:
cloud:
zookeeper:
config:
enabled: true
root: configuration
defaultContext: apps
profileSeparator: '::'
-
enabled
将此 value 设置为“false”会禁用 Zookeeper 配置 -
root
设置 configuration 值的基本命名空间 -
defaultContext
sets 设置所有 applications 使用的 name -
profileSeparator
sets 用于将 property 源中的 profile name 与 profiles 分隔开的分隔符的 value
74.3 ACL
您可以通过调用 CuratorFramework bean 的 addAuthInfo 方法为 Zookeeper ACL 添加身份验证信息。实现此目的的一种方法是提供您自己的 CuratorFramework bean:
@BoostrapConfiguration
public class CustomCuratorFrameworkConfig {
@Bean
public CuratorFramework curatorFramework() {
CuratorFramework curator = new CuratorFramework();
curator.addAuthInfo("digest", "user:password".getBytes());
return curator;
}
}
请参阅ZookeeperAutoConfiguration class以查看默认情况下如何配置 CuratorFramework bean。
或者,您可以从依赖于现有 CuratorFramework bean 的 class 添加凭据:
@BoostrapConfiguration
public class DefaultCuratorFrameworkConfig {
public ZookeeperConfig(CuratorFramework curator) {
curator.addAuthInfo("digest", "user:password".getBytes());
}
}
这必须在加速阶段发生。您可以在此阶段将 configuration classes 注册到 run,方法是使用@BootstrapConfiguration
注释它们,并将它们包含在 comma-separated 列表集中,作为resources/META-INF/spring.factories
文件中 property org.springframework.cloud.bootstrap.BootstrapConfiguration
的 value:
resources/META-INF/spring.factories.
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
my.project.CustomCuratorFrameworkConfig,\
my.project.DefaultCuratorFrameworkConfig
spring-cloud.adoc 中未解决的指令 - include::../../../../cli/docs/src/main/asciidoc/spring-cloud-cli.adoc [51]