zoukankan      html  css  js  c++  java
  • SpringCloud config native 配置

    1.概述

    最近项目使用springCloud 框架,使用config搭建git作为配置中心。

    在私有化部署中,出现很多比较麻烦的和鸡肋的设计。

    • 每次部署都需要安装gitlab
    • 有些环境安装完gitlab,外面不能访问,不给开端口
    • 实时同步比较麻烦

    基于上述问题,决定将配置中心依springCloud config本地文件的方式进行改造

    缺点就是每个服务器上都可以放配置文件

    2、springCloud config配置方式

    config配置方式有三种,本文主要介绍本地文件方式

    • git方式
    • svn方式
    • 本地文件方式

    3、部署架构

    springcloud config的流程架构

    image-20211112104205223

    4、环境搭建

    springcloud config分为eureka服务,config服务器端和config客户端

    1、eureka服务端搭建

    1、pom.xml

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- Eureka-Server 依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
     <dependencyManagement>
            <dependencies>
                <!-- SpringCloud 版本控制依赖 springboot版本需要匹配cloud版本 
                这里用的boot版本2.3.2.RELEASE -->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.SR12</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

    2、aplication.yml

    server:
      port: 8761
    
    eureka:
      instance:
        hostname: 127.0.0.1 #eureka服务端的实例名称2
      client:
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url:
          defaultZone: http://127.0.0.1:8761/eureka/
    

    3、启动类

    package com.feng;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class SpringCloud13EurekaApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringCloud13EurekaApplication.class, args);
        }
    }
    
    

    4、启动测试

    访问地址:http://127.0.0.1:8761/

    image-20211111181219443

    2、config服务端搭建

    1、pom.xml

        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- Eureka client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>
            <!--Spring Boot Actuator,感应服务端变化-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <!-- SpringCloud 版本控制依赖 -->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

    2、application

    server:
      port: 8888
    spring:
      profiles:
        active: native #设置为本地config
      application:
        name: springcloud-config
      cloud:
        config:
          server:
            native:
              search-locations: d:/config-repo #本地配置的路径
    #        git:
    #          uri: http://222.175.101.224:8090/liuyusong/springcloud-config.git
    #          search-paths: /config-repo
    eureka:
      client:
        service-url.defaultZone: http://127.0.0.1:8761/eureka/
      instance:
        prefer-ip-address: true
    

    3、启动类

    package com.feng;
    
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.config.server.EnableConfigServer;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    @EnableConfigServer
    public class SpringCloud14ConfigServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringCloud14ConfigServerApplication.class, args);
        }
    
    }
    
    

    4、测试服务器端

    浏览器访问 http://localhost:8888/springcloud-config/config-base-local.yml

    浏览器访问个 server端口/应用名字/文件名-环境名.yml

    3、config客户端搭建并测试

    1、pom.xml

      <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- Eureka client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-client</artifactId>
            </dependency>
            <!--Spring Boot Actuator,感应服务端变化-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <!-- SpringCloud 版本控制依赖 -->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

    2、application

    server:
      port: 8889
    spring:
      application:
        name: springcloud-15-config-client
    

    3、bootstrap

    spring:
      cloud:
        config:
          discovery:
            enabled: true
            service-id: springcloud-13-config-server #eureka的service
          name: config-test
    #      name: config-test,config-test1 可以配置多个配置
    eureka:
      client:
        service-url.defaultZone: http://127.0.0.1:8761/eureka/
      instance:
        prefer-ip-address: true
    

    4、启动类

    package com.feng;
    
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class SpringCloud15ConfigClientApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringCloud15ConfigClientApplication.class, args);
        }
    }
    

    5、测试类

    package com.feng.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class TestController {
    
        @Value("${myconfig.name}")
        String name;
        @Value("${myconfig.version}")
        String version;
        @GetMapping("/hello")
        public  String hello()
        {
            return "ok1"+name+version;
        }
    
    }
    
    
    

    6、测试客户端

    测试地址:http://localhost:8889/hello

    image-20211112103151952

    5、总结

    springcloud config 本地化配置的优点是不需要另外搭建gitlab或者svn,部署相对简单

    缺点是 如果有多个server端需要手动同步文件,每一个服务器都需要有文件

    6、源码地址

  • 相关阅读:
    pip不是内部或外部命令也不是可运行的程序或批处理文件的问题
    动态规划 leetcode 343,279,91 & 639. Decode Ways,62,63,198
    动态规划 70.climbing Stairs ,120,64
    (双指针+链表) leetcode 19. Remove Nth Node from End of List,61. Rotate List,143. Reorder List,234. Palindrome Linked List
    建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237
    链表 206 Reverse Linked List, 92,86, 328, 2, 445
    (数组,哈希表) 219.Contains Duplicate(2),217 Contain Duplicate, 220(3)
    重装系统
    java常用IO
    端口
  • 原文地址:https://www.cnblogs.com/chenn/p/15543469.html
Copyright © 2011-2022 走看看