• 七、springcloud之配置中心Config(二)之高可用集群


    方案一:传统作法(不推荐)

      服务端负载均衡

        将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护,而客户端在指定Config Server位置时,只要配置Config Server外的均衡负载即可。

        注:服务器端负载均衡和客户端负载均衡的区别

      存在的问题:

        客户端都是直接调用配置中心的server端来获取配置文件信息。这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,server端改变IP地址的时候,客户端也需要修改配置,不符合springcloud服务治理的理念。

    方案二:把config-server注册为服务(推荐)

      将server端当做一个服务注册到eureka中,client端去eureka中去获取配置中心server端的服务既可。

    一、config-server配置

      1.添加依赖

      加入了spring-cloud-starter-eureka,用来注册服务

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
    </dependencies>

      2.配置文件

      在配置文件中添加eureka.client.serviceUrl.defaultZone以指定服务注册中心的位置

    server:
      port: 8001
    spring:
      application:
        name: spring-cloud-config-server
      cloud:
        config:
          server:
            git:
              uri: # 配置git仓库的地址
              search-paths: # git仓库地址下的相对地址,可以配置多个,用,分割。
              username: # git仓库的账号
              password: # git仓库的密码
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8000/eureka/   ## 注册中心eurka地址

      高可用:复制一份配置,把端口为8003

      3.启动类

      启动类添加@EnableDiscoveryClient激活对配置中心的支持,用来将config-server注册到上面配置的服务注册中心上去。

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

      测试是否成功,参考上一篇:六、springcloud之配置中心Config

    二、config-client配置

      1.添加依赖

        添加spring-cloud-starter-eureka依赖,用来注册服务:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

      2.配置文件

      application.yml如下:

    spring:
      application:
        name: spring-cloud-config-client
    server:
      port: 8002

      bootstrap.properties如下:

    spring:
        cloud:
             config:
             name: "config-test"
                 lab: master
                 profile: dev
             discovery:
               enabled: true
               service-id: spring-cloud-config-server
             eureka:
              client:
                  serviceUrl:
               defaultZone: http://localhost/8000/eureka/

      主要是去掉了spring.cloud.config.uri直接指向server端地址的配置,增加了最后的三个配置:

    • spring.cloud.config.discovery.enabled :开启Config服务发现支持
    • spring.cloud.config.discovery.serviceId :指定server端的name,也就是server端spring.application.name的值
    • eureka.client.serviceUrl.defaultZone :指向配置中心的地址

      这三个配置文件都需要放到bootstrap.yml的配置中

      3.启动类

        启动类添加@EnableDiscoveryClient激活对配置中心的支持

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

        启动client端,在浏览器中访问:http://localhost:8000/ 就会看到server端和client端都已经注册了到注册中心了。

        停掉一个server,还可以访问,说明高可用集群搭建成功

    参考:http://blog.didispace.com/springcloud4-2/

       http://www.ityouknow.com/springcloud/2017/05/25/springcloud-config-eureka.html

  • 相关阅读:
    SpringBoot和SpringCould的关系
    MyBatis全局配置文件头
    MyBatis的SQL映射文件头
    MyBatis 驼峰式配置 yml配置
    频率组件
    序列化和反序列化
    生成器面试题
    序列化组件
    进程间通信IPC机制
    信号量、event事件和线程queue
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/9234523.html
Copyright © 2020-2023  润新知