Spring Cloud Consul配置Spring Cloud Config

时间:2015-11-17 04:12:47

标签: spring spring-cloud

我真的很难过这个。我们希望使用Spring Cloud Consul进行服务发现,我的大学正在推动使用Spring Cloud Consul Config而不是Spring Cloud 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和physical" / config"之间使用某种管道。每个Spring Cloud Consul Config应用程序实例的运行实例的目录:/

2 个答案:

答案 0 :(得分:3)

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

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

这是我的设置:

Spring Cloud配置服务器

依赖关系:

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);
    }
}

答案 1 :(得分:3)

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

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

对于服务发现,Consul具有健康检查机制,可以启用自动切换路由。在spring cloud config中,需要做额外的工作来实现半自动发现。