2

简而言之,我可以运行 Spring Cloud Config 服务器集群来确保高可用性吗?如果是,如何?

我正在尝试使用 Spring Cloud Config 作为我的中央配置服务。我的问题是每个客户端只能指定一个服务器来获取配置。如果此服务器已关闭,则一切都必须等待其恢复。

其他一些框架允许您运行多个服务器并在客户端枚举它们。Spring Cloud Config 有这样的功能吗?

如果那不可能,我正在考虑运行几个实例并将它们放在 nginx 后面。这会引起一些副作用吗?

任何建议将不胜感激。

4

1 回答 1

1

其他一些框架允许您运行多个服务器并在客户端枚举它们。Spring Cloud Config 有这样的功能吗?

您应该使用Spring Cloud Netflix Eureka将 Eureka Server 作为服务发现包含在内,并将Eureka Client包含在服务(微服务)中。您可以让配置服务器向发现服务注册。

Spring Cloud 配置发现服务

来自文件:

如果您使用 DiscoveryClient 实现,例如 Spring Cloud Netflix 和 Eureka Service Discovery 或 Spring Cloud Consul,您可以让 Config Server 注册到 Discovery Service。但是,在默认的“配置优先”模式下,客户端无法利用注册。

如果您更喜欢使用 DiscoveryClient 来定位 Config Server,可以通过设置 spring.cloud.config.discovery.enabled=true 来实现(默认为 false)。这样做的最终结果是客户端应用程序都需要具有适当发现配置的 bootstrap.yml(或环境变量)。例如,使用 Spring Cloud Netflix,您需要定义 Eureka 服务器地址(例如,在 eureka.client.serviceUrl.defaultZone 中)。使用此选项的代价是启动时额外的网络往返,以定位服务注册。好处是,只要 Discovery Service 是一个固定点,Config Server 就可以改变它的坐标。默认服务 ID 是 configserver,但您可以通过设置 spring.cloud.config.discovery.serviceId 在客户端上更改它(在服务器上,

例如bootstrap.yml在服务(客户)中:

spring:
  application:
    name: example-service
  cloud:
    config:
      fail-fast: true
      discovery:
        enabled: true
        service-id: configuration-server
# Eureka client
eureka:
  client:
    prefer-same-zone-eureka: true
    region: region1
    service-url:
      zone1: http://discovery-server-01:8761/eureka/,http://discovery-server-02:8761/eureka/
    availability-zones:
      region1: zone1
于 2019-03-17T11:14:56.987 回答