当前位置:   article > 正文

(七)spring-cloud入门学习:配置中心config server(git)_spring-cloud-config-server

spring-cloud-config-server

随着线上项目变的日益庞大,每个项目都有各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维成本高也容易出错。配置中心便是用来解决此类问题的。

一个配置中心提供的核心功能应该有什么:

  • 提供服务端和客户端支持
  • 集中管理各环境的配置文件
  • 配置文件修改之后,可以快速的生效
  • 可以进行版本管理
  • 支持大的并发查询
  • 支持各种语言

Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Spring Cloud使用git或svn存放配置文件,默认情况下使用git。

一、Config server
0. 使用github创建配置文件

  • 文件目录结构:spring-cloud -> config-file ->
    eurekaRibbon-dev.properties,为了方便测试仓库是public的,访问不需要用户名和密码;
  • 文件命名要规范eurekaRibbon-dev.properties表示可以通过/eurekaRibbon/dev进行访问;
  • 文件内容为hello.name=Kevin

在这里插入图片描述
在这里插入图片描述

1. 创建工程config_server, pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.kevin</groupId>
  <artifactId>config_server</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>config_server</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
  </parent>

  <dependencies>
    <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>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
        <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-dependencies</artifactId>
           <version>Greenwich.SR1</version>
           <type>pom</type>
           <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

2. application.properties

spring.application.name=configServer
server.port=9111

#git地址
spring.cloud.config.server.git.uri=https://github.com/kevin4j/spring-cloud.git
#指定分支,默认master,但是新建的github分支已经默认为main,所以此处需指定
spring.cloud.config.server.git.default-label=main
#文件目录
spring.cloud.config.server.git.search-paths=config-file
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3. Application.java开启ConfigServer

package com.kevin.config_server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class Application {
	
    public static void main( String[] args ) {
    	SpringApplication.run(Application.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4. 启动后访问http://127.0.0.1:9111/eurekaRibbon/dev
在这里插入图片描述
在这里插入图片描述
也可以直接访问文件内容:http://127.0.0.1:9111/eurekaRibbon-dev.properties
在这里插入图片描述
二、Config Client,在eureka_ribbon的基础上进行调整
1. pom.xml引入config

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4

2. 增加config配置文件bootstrap.properties

#配置文件名
spring.cloud.config.name=eurekaRibbon
#配置环境
spring.cloud.config.profile=dev
#config server地址
spring.cloud.config.uri=http://127.0.0.1:9111
spring.cloud.config.label=master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3. application.properties

spring.application.name=eurekaRibbon
server.port=9201

eureka.client.serviceUrl.defaultZone=http://localhost:9101/eureka/
eureka.client.healthcheck.enabled=true
  • 1
  • 2
  • 3
  • 4
  • 5

4. 测试类

@RestController
public class HelloController {
	
	@Value("${hello.name}")
    private String helloName;
	
	@RequestMapping("/getHelloName")
	public String getHelloName() {
		return this.helloName;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5. 重新启动eureka_ribbon,可以看出启动时会先读取配置中心的配置,即bootstrap.yml优先级高于application.yml先加载
在这里插入图片描述

6. 测试http://127.0.0.1:9201/getHelloName
在这里插入图片描述

参考:
https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_spring_cloud_config
http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/84096
推荐阅读
相关标签
  

闽ICP备14008679号