该版本仍在开发中,尚未被视为稳定。对于最新稳定版,请使用Spring Cloud Zookeeper 5.0.0spring-doc.cadn.net.cn

带 Zookeeper 的分布式配置

Zookeeper 提供了一个层级命名空间,允许客户端存储任意数据,例如配置数据。春云Zookeeper 配置是配置服务器和客户端的替代方案。 配置在特殊的“引导”阶段加载到 Spring 环境中 阶段。配置存储在/config默认命名空间。倍数地产来源实例是根据应用程序名称和激活状态创建的 配置文件,以模拟 Spring Cloud 配置中解析属性的顺序。例如,一个 应用名称为testApp以及开发轮廓具有以下性质 为此创建的资料来源:spring-doc.cadn.net.cn

最具体的属性来源在顶部,最不具体的在底部。 在配置/应用命名空间适用于所有使用 配置用Zookeeper。在config/testApp命名空间是可用的 仅对所命名服务实例testApp.spring-doc.cadn.net.cn

配置目前在应用程序启动时读取。发送HTTP发布请求/刷新导致配置被重新加载。观察配置 命名空间(Zookeeper 支持)也可用。spring-doc.cadn.net.cn

激活

包括对 的依赖org.springframework.cloud:spring-cloud-starter-zookeeper-config使 自动配置,可以设置 Spring Cloud Zookeeper 配置。spring-doc.cadn.net.cn

使用 Zookeeper 3.4 版本时需要更改 你描述的依赖方式。

Spring Boot Config Data Import

Spring Boot 2.4 引入了一种通过spring.config.import财产。现在这已经是从 Zookeeper 获取配置的默认方式。spring-doc.cadn.net.cn

要选择性地连接 Zookeeper 进行配置,请在 application.properties 中设置以下内容:spring-doc.cadn.net.cn

application.properties
spring.config.import=optional:zookeeper:

它会连接到默认位置“localhost:2181”的Zookeeper。移除自选:如果 Zookeeper 无法连接 Zookeeper,前缀会导致配置失败。要更改Zookeeper配置的连接属性,请设置以下任一。spring.cloud.zookeeper.connect-string或者将连接字符串添加到spring.config.import例如,Spring.config.import=optional:Zookeeper:MyHost:2818.导入属性中的位置优先于连接串财产。spring-doc.cadn.net.cn

Zookeeper配置会尝试从四个自动上下文加载值,基于spring.cloud.zookeeper.config.name(默认值为spring.application.name性质)和spring.cloud.zookeeper.config.default-context(默认为应用).如果你想指定上下文而不是使用计算出来的上下文,你可以把这些信息添加到spring.config.import陈述。spring-doc.cadn.net.cn

application.properties
spring.config.import=optional:zookeeper:myhost:2181/contextone;/context/two

这将选择性地加载从以下的配置。/contextone/上下文/二.spring-doc.cadn.net.cn

一个启动文件(属性或 yaml)对于 Spring Boot 配置数据方法的导入方式spring.config.import.

定制

Zookeeper配置可通过设置以下属性进行自定义:spring-doc.cadn.net.cn

spring:
  cloud:
    zookeeper:
      config:
        enabled: true
        root: configuration
        defaultContext: apps
        profileSeparator: '::'
如果你已经设置了spring.cloud.bootstrap.enabled=trueSpring.config.use-legacy-processing=true,或包含Spring-cloud-starter-bootstrap那么上述数值需要被置于bootstrap.yml而不是application.yml.

访问控制列表(ACL)

您可以通过调用addAuthInfo方法策展框架豆。实现这一点的一种方法是提供你自己的策展框架豆子,如下例所示:spring-doc.cadn.net.cn

@BoostrapConfiguration
public class CustomCuratorFrameworkConfig {

  @Bean
  public CuratorFramework curatorFramework() {
    CuratorFramework curator = new CuratorFramework();
    curator.addAuthInfo("digest", "user:password".getBytes());
    return curator;
  }

}

请查阅 ZookeeperAutoConfiguration 类,了解策展框架豆豆的默认配置。spring-doc.cadn.net.cn

或者,你也可以根据现有课程添加你在课程中的资历策展框架豆子,如下例所示:spring-doc.cadn.net.cn

@BoostrapConfiguration
public class DefaultCuratorFrameworkConfig {

  public ZookeeperConfig(CuratorFramework curator) {
    curator.addAuthInfo("digest", "user:password".getBytes());
  }

}

这种豆子的制作必须在加速敲击阶段完成。你可以注册 配置类通过注释@BootstrapConfiguration并将它们包含在你设置的逗号分隔列表中, 的值org.springframework.cloud.bootstrap.BootstrapConfiguration财产在resources/META-INF/spring.factories文件,如下例所示:spring-doc.cadn.net.cn

resources/META-INF/spring.factories
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
my.project.CustomCuratorFrameworkConfig,\
my.project.DefaultCuratorFrameworkConfig