Spring Cloud Consul配置Spring Cloud Config

我真的很难过这个 . 我们希望使用Spring Cloud Consul进行服务发现,我的大学正在推动使用Spring Cloud Consul Config而不是Spring Cloud Config,我之前已经为相关项目实施了Spring Cloud Consig Config . 问题是,Spring Cloud Config运行良好,并且具有无缝的开箱即用版本控制管道(git),用于动态集中管理属性 . 为了在Spring Cloud Consul Config中支持相同的功能,似乎需要重新发明已经融入Spring Cloud Config的轮子 .

有没有人有使用两者的经验?将两者结合使用是否合理?也就是说,让Spring Cloud Config Client指向Spring Cloud Config Server以获得更多“静态”环境属性(在dev,qa,stage,production和static之间不同的东西)和Spring Cloud Consul Config用于纯动态属性(如服务)发现?

如果我错了,请有人纠正我,但是根据我的理解,为了使用Spring Cloud Consul Config支持“静态”属性的动态版本控制,我需要做些什么,我需要在git和物理之间进行某种管道“ / config“每个Spring Cloud Consul Config应用程序实例的运行实例的目录:/

回答(2)

3 years ago

tl; dr:我使用spring cloud config和spring cloud consul但不使用spring cloud consul config .

我没有专门使用spring cloud consul配置,因为我没有使用consul配置,但我使用的是一个Spring Cloud 配置服务器,它在 Consul 中注册,我还有其他微服务通过consul访问spring cloud配置服务器进行服务发现 . 服务器和客户端都使用spring cloud consul来注册和发现配置服务器 . 配置服务器和配置客户端都使用spring cloud配置 .

这是我的设置:

Spring Cloud Config Server

依赖关系:

org.springframework.cloud:spring-cloud-config-server
org.springframework.cloud:spring-cloud-starter-consul-discovery
org.springframework.boot:spring-boot-starter-actuator

bootstrap.properties:

spring.application.name=config-server
spring.cloud.consul.host=CONSUL_HOSTNAME
spring.cloud.consul.port=CONSUL_PORT

application.properties:

spring.cloud.config.server.git.uri=GIT_REPO_URL
spring.cloud.config.server.git.username=GIT_REPO_USERNAME
spring.cloud.config.server.git.password=GIT_REPO_PASSWORD

Application.java:

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class Application
{
    public static void main(String[] args)
    {
        SpringApplication.run(Application.class);
    }
}

Spring Cloud Client Application

依赖关系:

org.springframework.cloud:spring-cloud-starter-config
org.springframework.cloud:spring-cloud-starter-consul-discovery
org.springframework.boot:spring-boot-starter-web
org.springframework.boot:spring-boot-starter-actuator

bootstrap.properties:

spring.application.name=client-app-name
spring.cloud.consul.host=CONSUL_HOSTNAME
spring.cloud.consul.port=CONSUL_PORT
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server

Application.java:

@SpringBootApplication
@EnableDiscoveryClient
public class Application
{
    public static void main(String[] args)
    {
        SpringApplication.run(Application.class);
    }
}

3 years ago

据我了解,在配置管理的情况下,与spring cloud配置相比,Consul(与git2Consul)提供跨多个数据中心交换数据和节点故障转移的解决方案 .

对于单数据中心使用,spring cloud配置(具有简单的故障转移解决方案,例如LVS,主/从,rsync机制等)就足够了 .

对于服务发现,Consul具有 Health 检查机制,可以自动切换路由 . 在Spring cloud配置中,需要做额外的工作来实现半自动发现 .