zoukankan      html  css  js  c++  java
  • 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

    上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下:

    一、改造config-server

    在现有项目基础上,改造。

    在其pom.xml文件加上Eureka的起步依赖spring-cloud-starter-eureka,代码如下:

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

    最后需要在启动类Application加上@EnableConfigServer,@EnableEurekaClient的注解。

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

    二、改造config-client

    将其注册微到服务注册中心,作为Eureka客户端,需要pom文件加上起步依赖spring-cloud-starter-netflix-eureka-server,代码如下:

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

    配置文件bootstrap.properties,注意是bootstrap。注解一行,不使用ip注册到服务中,使用服务名"config-server"。

    server.port=8881
    spring.application.name=config-client
    
    #开启配置服务发现,从配置中心读取文件
    spring.cloud.config.discovery.enabled=true
    #配置服务实例名称
    spring.cloud.config.discovery.serviceId=config-server
    spring.cloud.config.label=master
    
    #目前可选值有[dev,prod]
    spring.cloud.config.profile=dev
    
    #注释掉下面这行,使用"config-server"服务名来注册
    #spring.cloud.config.uri= http://localhost:8888/
    • spring.cloud.config.discovery.enabled 是从配置中心读取文件。
    • spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名。

    这时发现,在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用。

    依次启动eureka-servr,config-server,config-client 
    访问网址:http://localhost:8888

    访问http://localhost:8881/test,浏览器显示:

    我的名字是:devEnv,年龄是11

    本文源码下载: 
    https://github.com/forezp/SpringCloudLearning/tree/master/chapter7

  • 相关阅读:
    网页中添加下划线的方法汇总及优缺点
    git备注
    微信小程序封装年月日时分组件
    微信小程序底部弹窗动画
    微信小程序返回上一页的方法并传参
    微信小程序组件封装
    taro中子父传值
    taro初识一
    reactjs中使用高德地图计算两个经纬度之间的距离
    vue中使用scss
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/8979907.html
Copyright © 2011-2022 走看看