spring cloud config成为我的唯一失败点

时间:2016-07-01 04:10:35

标签: java spring spring-cloud spring-cloud-config

简单地说,我可以运行Spring Cloud Config服务器群集以确保高可用性吗?如果是,怎么样?

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

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

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

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

某些其他框架允许您运行多个服务器并在客户端枚举它们。 Spring Cloud Config是否具有这种功能?

您应该使用Spring Cloud Netflix Eureka将Eureka Server作为服务发现,并将Eureka Client包含在services(Microservice)中。 您可以让Config Server在Discovery Service中注册。

Spring Cloud Config Discovery service

来自文档:

  

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

     

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

例如服务(客户端)中的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