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、源码地址

  • 相关阅读:
    【转+补充】在OpenCV for Android 2.4.5中使用SURF(nonfree module)
    Delphi StarOffice Framework Beta 1.0 发布
    Angular ngIf相关问题
    angularjs文档下载
    公众号微信支付开发
    公众号第三方平台开发 教程六 代公众号使用JS SDK说明
    公众号第三方平台开发 教程五 代公众号处理消息和事件
    公众号第三方平台开发 教程四 代公众号发起网页授权说明
    公众号第三方平台开发 教程三 微信公众号授权第三方平台
    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
  • 原文地址:https://www.cnblogs.com/chenn/p/15543469.html
Copyright © 2011-2022 走看看