SpringCloud 第八章:SpringCloud Config

背景

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。Spring Cloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理…….

用途

Spring Cloud Config是代理通讯的一个角色,为微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。分为服务端与客户端。
详细用法:连接GIT,将本地的配置提交到git上,如果spring cloud config检测文件发生变化,则进行通知各个服务进行更新配置文件。微服务不需要重启。所以的配置信息以rest方式进行暴露出来,由rest接口进行调用

服务端

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

客户端

客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。

如何集成?
服务端配置
1、在git上创建仓库,克隆到本地与远程仓库进行连接
2、创建config配置文件。//注意:一定要确保在git上的文件数据不存在乱码或者特殊字符空格等等,否则会报错的。需要保存的时候使用编码为UTF-8。如果有问题可以在git上再进行编辑一下,确保无问题
spring:
	profiles:
		active:
		- dev
---
spring:
	profiles: dev
#开发环境
	application:
		name: microservicecloud-config-dev
---
spring:
	profiles: test	#测试环境application:
	name: microservicecloud-config-test	#排请保存为UTF-8格式

   git status
   git add .
   git commit -m "文件信息"
   git push orgin master
3、创建config微服务,修改POM文件。配置文件默认端口:3344
  <dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-server</artifactId>
  </dependency>
4、修改config微服务配置文件
  server:
	port: 3344
  spring:
	application:
		name:microservicecloud-config-cloud:
	config:
		server:
			git:
			uri: https://github.com/wangsh6379/springcloud_config.git #GitHub上面的git仓库地址
5、修改主配置类,启动config注解
  @EnableConfigServer
 
6、启动config微服务访问,获取git远程库配置,可设置默认配置,如果没有匹配上即可获取默认配置
dev环境:http://URL:PORT/application-dev.yml
test环境:http://URL:PORT/application-test.yml

7、在Config中访问配置文件的多种方式:
	1、http://URL:PORT/application-dev.yml
	2、http://URL:PORT/application/dev/master	#携带分支
	3、http://URL:PORT/master/application-dev.yml

客户端配置?

1、在config的git仓库中创建client配置文件
spring:
  profiles:
	active:
	- dev
---
server:
  port: 8201	# 端口
spring:
  profiles: dev
  application:
    name: config-client
eureka:
  client: 
    service-url: 
      defaultZone: http://localhost-dev:8761/eureka/
---
server:
  port: 8202	# 端口
spring:
  profiles: test
  application:
    name: config-client
eureka:
  client: 
    service-url: 
      defaultZone: http://localhost-test:8761/eureka/
2、创建client微服务。修改pom文件
  <dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config</artifactId>
  </dependency>
  
3、创建bootstrap.yml修改配置文件
spring:
  cloud:
    config:
	  name: config-client #这里的name要与git上的资源名称相同,注意没有yml后缀名profile: dev #本次访问的配置项
	  label: master	#分支名称
	  uri: http://config-3344.com:3344 #本微服务启动后先去找SERVER服务,通过SpringCloudconfig获取GitHub的服务地址
4、创建appcaliton.yml配置文件
  spring:
	application:
		name: config-client
5、代码,根据config-client去3344的服务中获取git路径,再根据配置文件名称找到所需要的配置,将配置获取
@RestController
public class ConfigClientRest{
	@Value("${spring.application.name}")
	private String applicationName;
	@Value("${eureka.client.service-url.defaultZone}")
	private String eurekaServers;
	@Value("${server.port}")
	private String port;
	@RequestMapping("/config")
	public String getConfig(){
		String str = "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port;
		System.out.println("******str: " + str);
		return "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port;
	}
}
bootstrap.yml是什么?
  • applicaiton.yml是用户级的资源配置项
  • bootstrap.yml是系统级的,优先级更加高

Spring Cloud会创建一个’Bootstrap Context’,作为Spring应用的Application Context的父上下文。初始化的时候,'Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的’Environment
Bootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。Bootstrap context和Application Context有着不同的约定,
所以新增了一个bootstrap.yml'文件,保证Bootstrap ContextApplication Context`配置的分离。

如何在现有的Eureka或者微服务修改成Config配置版本?
1、创建bootstrap.yml配置文件
spring:
  cloud:
    config:
	  name: config-client-eureka #这里的name要与git上的资源名称相同,注意没有yml后缀名profile: dev #本次访问的配置项
	  label: master	#分支名称
	  profile: test #这个决定获取git仓库文件的环境配置
	  uri: http://config-3344.com:3344 #本微服务启动后先去找SERVER服务,通过SpringCloudconfig获取GitHub的服务地址
2、创建application.yml配置文件。
  spring:
	application:
		name: config-client-eureka # 此配置信息全部从config连接的git仓库中获取
2、访问Eureka,如果可以成功启动则可以成功。
策略切换

在git仓库中修改配置文件上传git,然后在项目不修改任何文件的前提去自动获取。不应该在微服务中修改配置文件已达到切换环境的做法。


SpringCloud 系列代码开源地址:代码地址
SpringCloud 技术群聊地址:Q群地址


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring Cloud Config是一个分布式配置管理工具,它提供了集式的外部配置管理,可以帮助我们在微服务架构管理和维护应用程序的配置。 Spring Cloud Config的核心思想是将应用程序的配置从代码分离出来,以便在不重新部署应用程序的情况下进行配置的修改和更新。它使用Git或其他版本控制系统来存储和管理配置文件,并通过HTTP或消息总线将配置文件提供给应用程序。 Spring Cloud Config的主要组件包括: 1. Config Server:配置服务器,负责从Git或其他版本控制系统读取配置文件,并将其提供给客户端应用程序。它可以通过HTTP或消息总线的方式将配置文件推送给客户端。 2. Config Client:配置客户端,是应用程序的一个模块,负责从Config Server获取配置文件,并将其应用到应用程序。 3. Spring Cloud Bus:消息总线,用于在微服务架构传播配置文件的变更。当配置文件发生变化时,Config Server会通过消息总线通知所有的Config Client,从而实现配置的动态更新。 使用Spring Cloud Config可以实现以下功能: 1. 集式管理和维护应用程序的配置,避免了在每个应用程序硬编码配置信息的问题。 2. 实现配置的动态更新,当配置文件发生变化时,应用程序可以自动获取最新的配置。 3. 支持多环境的配置管理,可以为不同的环境提供不同的配置文件。 4. 支持配置的版本控制,可以通过Git或其他版本控制系统管理配置文件的历史记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

75888丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值