• 5.4 SpringCloud配置中心搭建以及问题解决 > 我的程序猿之路:第四十四章


    一、官网介绍

      【英文说明】

      【中文说明】

       【通俗中文解释】  --解释来源:--https://blog.csdn.net/forezp/article/details/81041028

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

    二、配置中心服务器配置并启动、如下:

    第一步:创建一个SpringBoot工程,名称为Config-server,如下:

     第二步:引入依赖(pom如下)

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     4     <modelVersion>4.0.0</modelVersion>
     5     <parent>
     6         <groupId>org.springframework.boot</groupId>
     7         <artifactId>spring-boot-starter-parent</artifactId>
     8         <version>2.2.2.RELEASE</version>
     9         <relativePath/> <!-- lookup parent from repository -->
    10     </parent>
    11     <groupId>com.example</groupId>
    12     <artifactId>config</artifactId>
    13     <version>0.0.1-SNAPSHOT</version>
    14     <name>config</name>
    15     <description>Demo project for Spring Boot</description>
    16 
    17     <properties>
    18         <java.version>1.8</java.version>
    19         <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
    20     </properties>
    21 
    22     <dependencies>
    23         <dependency>
    24             <groupId>org.springframework.cloud</groupId>
    25             <artifactId>spring-cloud-config-server</artifactId>
    26         </dependency>
    27         <dependency>
    28             <groupId>org.springframework.cloud</groupId>
    29             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    30         </dependency>
    31 
    32         <dependency>
    33             <groupId>org.springframework.boot</groupId>
    34             <artifactId>spring-boot-starter-test</artifactId>
    35             <scope>test</scope>
    36             <exclusions>
    37                 <exclusion>
    38                     <groupId>org.junit.vintage</groupId>
    39                     <artifactId>junit-vintage-engine</artifactId>
    40                 </exclusion>
    41             </exclusions>
    42         </dependency>
    43     </dependencies>
    44 
    45     <dependencyManagement>
    46         <dependencies>
    47             <dependency>
    48                 <groupId>org.springframework.cloud</groupId>
    49                 <artifactId>spring-cloud-dependencies</artifactId>
    50                 <version>${spring-cloud.version}</version>
    51                 <type>pom</type>
    52                 <scope>import</scope>
    53             </dependency>
    54         </dependencies>
    55     </dependencyManagement>
    56 
    57     <build>
    58         <plugins>
    59             <plugin>
    60                 <groupId>org.springframework.boot</groupId>
    61                 <artifactId>spring-boot-maven-plugin</artifactId>
    62             </plugin>
    63         </plugins>
    64     </build>
    65 
    66 </project>

    下载依赖完成后

    第三步:启动类配置注解

           配置:@EnableConfigServer   如下:

     1 package com.example.config;
     2 import org.springframework.boot.SpringApplication;
     3 import org.springframework.boot.autoconfigure.SpringBootApplication;
     4 import org.springframework.cloud.config.server.EnableConfigServer;
     5 @SpringBootApplication
     6 @EnableConfigServer
     7 public class ConfigApplication {
     8     public static void main(String[] args) {
     9         SpringApplication.run(ConfigApplication.class, args);
    10     }
    11 
    12 }

      第四步:编写application.properties配置文件  

    1 server.port=8760
    2 spring.application.name=Config-Server
    3 #用的是gitlab
    4 spring.cloud.config.server.git.uri=https://git.lug.ustc.edu.cn/fanyuyi/hello.git
    5 spring.cloud.config.server.git.search-paths=respo
    6 spring.cloud.config.label=master
    7 spring.cloud.config.server.git.username=
    8 spring.cloud.config.server.git.password=
    9 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

    git配置

     

    1.spring.cloud.config.server.git.uri=

       2.spring.cloud.config.server.git.search-paths=

     

     3.spring.cloud.config.label=

       4.dev

    第五步:启动

           1.启动Eureka注册中心

           2.启动Config-Server

    第六步:访问

    http://localhost:8760/aa/dev             (aa是随便写的)得到如下图的json

    三、配置中心客户端配置并启动、如下:

    第一步:创建一个SpringBoot工程,名称为Config-Client,如下:

     第二步:引入依赖(pom如下)

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     4     <modelVersion>4.0.0</modelVersion>
     5     <parent>
     6         <groupId>org.springframework.boot</groupId>
     7         <artifactId>spring-boot-starter-parent</artifactId>
     8         <version>2.2.2.RELEASE</version>
     9         <relativePath/> <!-- lookup parent from repository -->
    10     </parent>
    11     <groupId>com.example</groupId>
    12     <artifactId>client</artifactId>
    13     <version>0.0.1-SNAPSHOT</version>
    14     <name>client</name>
    15     <description>Demo project for Spring Boot</description>
    16 
    17     <properties>
    18         <java.version>1.8</java.version>
    19         <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
    20     </properties>
    21 
    22     <dependencies>
    23         <dependency>
    24             <groupId>org.springframework.boot</groupId>
    25             <artifactId>spring-boot-starter-web</artifactId>
    26         </dependency>
    27         <dependency>
    28             <groupId>org.springframework.cloud</groupId>
    29             <artifactId>spring-cloud-starter-config</artifactId>
    30         </dependency>
    31         <dependency>
    32             <groupId>org.springframework.cloud</groupId>
    33             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    34         </dependency>
    35 
    36         <dependency>
    37             <groupId>org.springframework.boot</groupId>
    38             <artifactId>spring-boot-starter-test</artifactId>
    39             <scope>test</scope>
    40             <exclusions>
    41                 <exclusion>
    42                     <groupId>org.junit.vintage</groupId>
    43                     <artifactId>junit-vintage-engine</artifactId>
    44                 </exclusion>
    45             </exclusions>
    46         </dependency>
    47     </dependencies>
    48 
    49     <dependencyManagement>
    50         <dependencies>
    51             <dependency>
    52                 <groupId>org.springframework.cloud</groupId>
    53                 <artifactId>spring-cloud-dependencies</artifactId>
    54                 <version>${spring-cloud.version}</version>
    55                 <type>pom</type>
    56                 <scope>import</scope>
    57             </dependency>
    58         </dependencies>
    59     </dependencyManagement>
    60 
    61     <build>
    62         <plugins>
    63             <plugin>
    64                 <groupId>org.springframework.boot</groupId>
    65                 <artifactId>spring-boot-maven-plugin</artifactId>
    66             </plugin>
    67         </plugins>
    68     </build>
    69 
    70 </project>

    第三步:写一个controller

     

     1 package com.example.client.web;
     2 
     3 import org.springframework.beans.factory.annotation.Value;
     4 import org.springframework.web.bind.annotation.RequestMapping;
     5 import org.springframework.web.bind.annotation.RequestParam;
     6 import org.springframework.web.bind.annotation.RestController;
     7 
     8 @RestController
     9 public class MyControler {
    10 
    11     @Value("${foo}")
    12     String foo;
    13 
    14     @RequestMapping("/hi")
    15     public String web(@RequestParam(name="name",defaultValue = "lisi") String name){
    16         return "hello my name is ["+name+"]"+"-"+foo;
    17     }
    18 }

    第四步:编写application.properties配置文件 ,不,是bootstrap.priperties配置文件

     

    1 server.port=8080
    2 spring.cloud.config.profile=dev
    3 spring.cloud.config.label=master
    4 spring.cloud.config.uri=http://localhost:8760/
    5 spring.application.name=Client
    6 eureka.client.service-url.defaultZone=http://localhost:8761/eureka

    第五步:启动

           1.Eureka注册中心-已启动、Config-Server-已启动

           2.启动Config-Client

    第六步:访问

              http://localhost:8080/hi

     四、说明

       1.Http 服务有以下形式的资源:

    (来自官网)--需细读理解
    /{application}/{profile}[/{label}]
    /{application}-{profile}.yml
    /{label}/{application}-{profile}.yml
    /{application}-{profile}.properties
    /{label}/{application}-{profile}.properties

    2.配置git(官网说明)
    Spring cloud 配置服务器从各种来源为远程客户端提供配置。 下面的示例从 git 仓库获取配置(必须提供) ,如下面的示例所示:

      

    五、其他博客问题归纳

    1.解决了默认为config配置端口8888覆盖问题
         把application.properties改为bootstrap.properties 解决了默认为config配置端口8888覆盖问题

    2.不加载config服务
         client的pom配置中不能加spring-cloud-config-server

    3.远程gitlab仓库的{application}-{profile}.properties名称为application-dev.properties。application改成别的会找不到配置文件

     

  • 相关阅读:
    ubuntu安装Sogou输入法失败
    二进制转换与此平台上的长模式不兼容
    thinkpad e570 如何进入bios
    计算beta分布并画图(1)
    python利用pandas和xlrd读取excel,特征筛选列
    python利用jieba进行中文分词去停用词
    python利用heapq实现小顶堆(查找最大的N个元素)
    python根据索引删除内容并写入文本
    [Water]UVA 11792 Commando War
    [最大子序列和]Hdu 5280 Senior's Array
  • 原文地址:https://www.cnblogs.com/fanyuyi-boke/p/qiao_duo_shao_nian_dai_ma_neng_ba_shou_zhi_mo_ping44.html
Copyright © 2020-2023  润新知