• 《springcloud 三》分布式配置中心


    Git环境搭建

    使用码云环境搭建git服务器端 

    码云环境地址:https://gitee.com/majie2018

    服务端详解

    项目名称:springboot2.0-config_server

    Maven依赖信息

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.1.RELEASE</version>
        </parent>
        <!-- 管理依赖 -->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Finchley.M7</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <!--spring-cloud 整合 config-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>
            <!-- SpringBoot整合eureka客户端 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
        </dependencies>
        <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
        <repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/libs-milestone</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>

    application.yml配置

    ###服务注册到eureka地址
    eureka:
      client:
        service-url:
               defaultZone: http://localhost:8100/eureka
    spring:
      application:
        ####注册中心应用名称
        name: config-server
      cloud:
        config:
          server:
            git:
              ###git环境地址
              uri: https://gitee.com/itmayi/config.git
              ####搜索目录
              search-paths:
                - config  
          ####读取分支      
          label: master
    ####端口号      
    server:
      port: 8888

    项目启动

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

    @EnableConfigServer 开启分布式配置中心服务器端

    读取配置文件信息 http://127.0.0.1:8888/config-client-dev.properties

    客户端详解

    项目名称:springboot2.0-config_client

    Maven依赖信息

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.1.RELEASE</version>
        </parent>
        <!-- 管理依赖 -->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Finchley.M7</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <!-- SpringBoot整合Web组件 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-client</artifactId>
            </dependency>
            <!-- SpringBoot整合eureka客户端 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
        </dependencies>
        <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
        <repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/libs-milestone</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>

    bootstrap.yml

    spring:
      application:
        ####注册中心应用名称
        name:  config-client
      cloud:
        config:
        ####读取后缀
          profile: dev
          ####读取config-server注册地址
          discovery:
            service-id: config-server
            enabled: true
    #####    eureka服务注册地址    
    eureka:
      client:
        service-url:
               defaultZone: http://localhost:8100/eureka    
    server:
      port: 8882

    读取配置文件

    @RestController
    public class IndexController {
        @Value("${name}")
        private String name;
    
        @RequestMapping("/name")
        private String name() {
            return name;
        }
    
    }

    动态刷新数据

    在SpringCloud中有手动刷新配置文件和实时刷新配置文件两种方式。

    手动方式采用actuator端点刷新数据

    实时刷新采用SpringCloud Bus消息总线

    actuator端点刷新数据

    Maven依赖信息

    <!-- actuator监控中心 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    Bootstrap.xml新增

    开启监控断点

    management:
      endpoints:
        web:
          exposure:
            include: "*"

    生效前提

    在需要刷新的Bean上添加@RefreshScope注解。

    @RestController
    // @SpringBootApplication
    @RefreshScope
    public class ConfigClientController {
    
    http://127.0.0.1:8882/actuator/refresh 
        @Value("${itmayieduInfo}")
        private String itmayieduInfo;

    当配置更改时,标有@RefreshScope的Bean将得到特殊处理来生效配置

    手动刷新接口

    Post请求手动刷新

    http://127.0.0.1:8882/actuator/refresh  启动刷新器 从cofnig server读取

    实际项目中一般都采用手动刷新,  基于bus总线的实时刷新太占内存,消耗cpu

  • 相关阅读:
    C++中的explicitkeyword
    Stream使用教程
    Java实现最长回文串
    Java实现最长回文串
    Java实现最长回文串
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
  • 原文地址:https://www.cnblogs.com/a1304908180/p/10676452.html
Copyright © 2020-2023  润新知