SpringCloud 系列(七)------Config 分布式配置中心

一、概述


微服务意味着要将单体应用中的的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量服务。由于每个服务都有配置文件yml,如果系统非常庞大,这些yml不好管理。基于此需求,SpringCloud Config 提供了 ConfigServer 来解决问题。

【1】是什么:SpringCloud Config 为微服务架构中的微服务提供集中式的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。Config 分为服务端和客户端两部分,与 Eureka 相同。服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密、解密信息等访问接口。客户端是通过指定的配置中心管理应用资源、以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息,配置服务器默认采用 git 来存储配置信息,这样有助于对环境配置进行版本管理,并且可以通过 git 客户端工具来方便的管理和访问配置内容。

【2】解决的问题:①、集中管理配置文件;
   ②、不同环境不同配置,动态化的配置更新,分环境部署比如 dev/test/prod/beta/release;
   ③、运行期间动态调整配置,不需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息;
   ④、当配置变动时,服务不需要重启即可感知到配置的变化并应用新配置;
   ⑤、将配置信息以REST接口的形式暴露;
【3】与 GitHub 整合:由于 SpringCloud Config 默认使用 Git 来存储配置文件(也可以使用SVN等工具)推荐使用Git,而且使用的是 http/https 形式。

二、SpringCloud Config 服务端配置


【1】 使用GitHub创建一个名为microservicecloud-config的新仓库,如下;

【2】 复制获得的 HTTPS 协议的 Git 地址;

【3】 在本地硬盘目录下,新建一个仓库并克隆(git clone) Git 服务(运维工程师将其克隆并修改),后期在此文件中,创建配置并与 Git 交互;
 

【4】在克隆的仓库中创建 application.yml 文件,内容如下:重点(文件使用UTF-8进行编码
 

spring:
	profiles:
	  active:
	  - dev
	  
---
spring:
	profiles: dev #开发环境
	application:
	name: microservicecloud-config-yintong-dev
---
spring:
	profiles: test #测试环境
	application:
	name: microservicecloud-config-yintong-test

【5】将文件 push 到远程的 Git 仓库;
【6】新建Module 模块 microservicecloud-config-3344 为 Cloud 的配置中心模块,与 GitHub 进行沟通;
【7】pom.xml 文件导入 config 的 start 启动器;

<!-- springcloud-config -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-server</artifactId>
</dependency>

【8】application.yml 配置文件:

spring:
    port: 3344
	
spring:
    application:
	name: microservicecloud-config
    cloud:
	config:
	    server:
	        git:
		    uri: [email protected]:zzxaifj/microservicecloud-config.git

【9】主配置类中添加 @EnableConfigServer 注解,启动SpringCloud 的 Config 应用;
【10】windows 下修改 hosts 文件,增加映射:127.0.0.1 config-3344.com;
【11】测试通过 Config 服务是否可以从 GitHub 中获取配置文件:http://config-3344.com:3344/application-dev.yml 通过给服务后添加配置文件名直接获取内容,查看是否能够获取到内容。如果访问配置文件中没有配置的环境(例如:abc)则只能获取默认的配置信息;
 
【12】配置读取规则:圈起来的就是我们上面默认使用的。
 

三、SpringCloud Config 客户端配置


【1】在刚才拉去的本地仓库中新建配置文件 microservercloud-config-client.yml;

spring:
    profiles:
    active:
    - dev
	  
---
server:
    port: 8201
spring:
    profiles: dev #开发环境
    application:
    name: microservicecloud-config-client
---
server:
    port: 8202
spring:
    profiles: test #测试环境
    application:
    name: microservicecloud-config-client

【2】将此文件提交至 GitHub 中,此文件时运维工程师进行修改的,也就是生产上使用的配置,会覆盖程序员自己的配置相同的内容。
【3】新建 microservicecloud-config-client-3355 客户端服务;
【4】pom.xml 文件:客户端不带 server;

<!-- springcloud-config -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

【4】创建 bootstart.yml 配置文件是系统级的,优先级更高(不同之处)。application.yml 是用户级的资源配置项;

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

spring:
    port: 3344
	
spring:
    cloud:
	config:
	    name: microservicecloud-config-client #需要从GitHub 上读取的资源名称,注意没有 yml 后缀。
	    profile: dev #本次访问的配置项
	    label: master #分支
	    uri: http://config-3344.com:3344 #springcloud config 服务地址

【5】创建 application.yml 配置文件:主要配置一些运维不会碰的配置。

spring:
    application:
	name: microservice-config-client

【6】配置文件映射:127.0.0.1 client-config.com;
【7】主启动类没有新的注解需要添加;
----如果喜欢,点个  红心♡  支持以下,谢谢----

发布了229 篇原创文章 · 获赞 317 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/zhengzhaoyang122/article/details/103341478