SpringCloud_Config配置中心

 如图分为客户端,服务端

1.简介:

        Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。

         其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;

        而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。

        Spring Cloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。

        由于Spring Cloud Config实现的配置中心默认采用Git来存储配置信息,所以使用Spring Cloud Config构建的配置服务器,天然就支持对微服务应用配置信息的版本管理,并且可以通过Git客户端工具来方便的管理和访问配置内容。

        当然它也提供了对其他存储方式的支持,比如:SVN仓库、本地化文件系统

构建方式步骤:

        通过Spring Cloud构建一个Config Server,非常简单,只需要三步:

        1 pom.xml中引入spring-cloud-config-server依赖。

         2 在程序主类添加@EnableConfigServer注解,开启Config Server。

        3 最后对yml文件进行GIT配置即可。

        配置中心验证:

首先编写4个配置文件~,然后里面比如有个from属性,进行设置不同的值。最后通过gitbash上传到GitHub上,根据验证规则,如下所示:http://localhost:4000/{application}/{profile}/{label}

2.server服务提供者:

pom代码:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<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>
  <parent>
    <groupId>com.bfxy</groupId>
    <artifactId>spring-cloud-master</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>spring-cloud-06-config-server</artifactId>


  <dependencies>
	  	<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>Dalston.SR5</version>  -->
  			<version>Edgware.SR4</version>
  			<!-- <version>Finchley.SR1</version>  -->
  			<type>pom</type>
  			<scope>import</scope>
  		</dependency>
  	</dependencies>
  </dependencyManagement>


  <build>
  		<finalName>spring-cloud-06-config-server</finalName>
	  	<plugins>
	  		<plugin>
	  			<groupId>org.springframework.boot</groupId>
	  			<artifactId>spring-boot-maven-plugin</artifactId>
	  			<configuration>
	  				<mainClass>com.bfxy.springcloud.Application</mainClass>
	  			</configuration>
	  		</plugin>
	  	</plugins>
  </build>

</project>

yml文件:配置git管理

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/baihezhuo/learngit  ##git地址
          
server:
  context-path: /
  port: 4000

主入口:@EnableConfigServer        //开启配置中心服务

package com.bfxy.springcloud;

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

@EnableConfigServer		//开启配置中心服务
@SpringBootApplication	//SpringBoot 核心配置
public class Application {

	public static void main(String[] args) {
		
		SpringApplication.run(Application.class, args);
	}
	
}

3.客户端

pom代码:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<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>
  <parent>
    <groupId>com.bfxy</groupId>
    <artifactId>spring-cloud-master</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>spring-cloud-06-config-client</artifactId>
  <dependencies>
  	<dependency>
  		<groupId>org.springframework.boot</groupId>
  		<artifactId>spring-boot-starter-web</artifactId>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.cloud</groupId>
  		<artifactId>spring-cloud-starter-config</artifactId>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.boot</groupId>
  		<artifactId>spring-boot-starter-actuator</artifactId>
  	</dependency>
  </dependencies>

  <dependencyManagement>
  	<dependencies>
  		<dependency>
  			<groupId>org.springframework.cloud</groupId>
  			<artifactId>spring-cloud-dependencies</artifactId>
  			<!-- <version>Dalston.SR5</version>  -->
  			<version>Edgware.SR4</version>
  			<!-- <version>Finchley.SR1</version>  -->
  			<type>pom</type>
  			<scope>import</scope>
  		</dependency>
  	</dependencies>
  </dependencyManagement>


  <build>
  		<finalName>spring-cloud-06-config-client</finalName>
	  	<plugins>
	  		<plugin>
	  			<groupId>org.springframework.boot</groupId>
	  			<artifactId>spring-boot-maven-plugin</artifactId>
	  			<configuration>
	  				<mainClass>com.bfxy.springcloud.Application</mainClass>
	  			</configuration>
	  		</plugin>
	  	</plugins>
  </build>
</project>

配置yml:  客户端配置文件名固定bootstrap.yml

git中文件名称  evn-dev.properties    项目名称-环境.properties

spring:
  application:
    name: evn
  cloud:
    config:##重点
      uri: http://localhost:4000/    ##config服务提供者
      profile: dev    ##dev环境的配置
      label: master   ##分支
management:
  security:
    enabled: false
##http://localhost:4000/{application}/{profile}/{label}
spring:
  application:
    name: evn
  cloud:
    config:
      uri: http://localhost:4000/
      profile: dev
      label: master
 
     
server:
  context-path: /
  port: 7001

management:
  security:
    enabled: false

主入口:(没有任何变化)

package com.bfxy.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication	//SpringBoot 核心配置
public class Application {

	public static void main(String[] args) {
		
		SpringApplication.run(Application.class, args);
	}
	
}

用接口测试取出配置文件数据:

@RefreshScope      //post方法进行手工强制刷新:  请求http://localhost:7001/refresh
package com.bfxy.springcloud.api;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RefreshScope		//post方法进行手工强制刷新:  http://localhost:7001/refresh
@RestController
public class ConfigController {

	
	@Value("${from}")
	private String from;
	
	@RequestMapping(value="/from")
	public String from(){
		System.err.println("from: " + from);
		return this.from;
	}
	
	
}

        动态刷新配置功能。很多时候我们去修改git上的properties配置文件,希望我们的我服务在不停机更新配置的情况下动态进行更新配置,这样就需要使用到我们的config动态刷新模块了,必须要记得引入依赖:spring-boot-starter-actuator

        然后我们可以在任何位置。比如config-client的controller设置@RefreshScope注解标识动态刷新。        

        最后spring-boot-starter-actuator 从1.5开始很多端点都受权限保护了,也就是增加了安全/权限,要么我们可以使用security进行配置用户/密码,或者我们可以在yml主配置文件里禁用掉安全配置即可!

        最后我们通过访问://http://localhost:7001/refresh 就可以实现动态刷新配置中心数据啦。也就是我们可以理解为更为高大上的zookeeper配置中心产生了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

择业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值