首页 文章

Spring Cloud Consul配置Spring Cloud Config

提问于
浏览
10

我真的很难过这个 . 我们希望使用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 回答

  • 1

    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

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

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

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

相关问题