2 Star 0 Fork 0

HK-Poc / spring-config-service

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README.md 5.29 KB
一键复制 编辑 原始数据 按行查看 历史
文龙 提交于 2018-01-31 18:55 . 文档更新

spring-cloud-config

SpringCloud 配置中心

一、背景

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

二、简介

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

三、基础搭建

Server 端(独立部署)

1、 配置

修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/application.yml
此配置文件用来指定服务端从何处获取项目配置文件信息,根据实际情况修改。

2、启动

进入目录:cd $PWD/spring-cloud-config-server
执行脚本: sh startup-code.sh

3、测试

使用浏览器访问 http://${ip}:8011/config/dev
成功会返回如下信息:

说明:请求地址http://${ip}:8011/config/dev 中的 config/dev对应的是配置文件的名称-节点。
例如config/pro请求获取的是config-pro.properties文件属性

Client 端(嵌入到业务系统,可以单独部署测试)

1、配置

修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/bootstrap.properties

2、启动

进入目录:cd $PWD/spring-cloud-config-client
执行脚本: sh startup-code.sh

3、测试

使用浏览器访问 http://${ip}:8012/hello
成功会返回如下信息:

4、动态修改配置测试:

说明:
红色标记处注解表示此类中被spring管理(字段上有@value)的字段支持动态刷新

修改Git上配置文件后需要手动调用刷新接口 http://${ip}:8012/refresh才能生效 红色标记处如果为true,刷新接口将被拦截。

修改Git上配置信息后使用浏览器访问http://${ip}:8012/hello
成功会返回修改后信息:

Tips:可以将动态刷新接口配置到Git项目的WebHooks中,当有配置文件提交时自动触发接口调用

5、Client端如何嵌入到业务系统

1).将POM文件依赖拷贝到业务系统POM文件中
2).将目录$PWD/spring-cloud-config-server/src/main/resources下配置文件拷贝到业务系统中
3).在需要从配置中心注入属性的字段上添加@Value("${hello}")(hello为配置文件中字段名)
4).如果需要支持动态刷新,在需要注入属性的类上添加注解@RefreshScope

四、高可用搭建

目前客户端都是直接调用配置中心的server端来获取配置文件信息。这样就存在一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,server端改变IP地址,客户端也需要修改配置,不符合springcloud服务治理的理念。

#####Server端改造

1、添加依赖

<dependencies>  
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-config-server</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
</dependencies>

2、修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/application.yml

3、启动类 启动类添加@EnableDiscoveryClient注解

#####Client端改造

1、添加依赖

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

2、修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/bootstrap.properties 主要是去掉了spring.cloud.config.uri直接指向server端地址的配置,增加了最后的三个配置:
spring.cloud.config.discovery.enabled :开启Config服务发现支持 spring.cloud.config.discovery.serviceId :指定server端的name,也就是server端spring.application.name的值 eureka.client.serviceUrl.defaultZone :指向配置中心的地址 这三个配置文件都需要放到bootstrap.properties的配置中

3、启动类
启动类添加@EnableDiscoveryClient注解

五、使用消息总线

参考文档:$PWD/spring-cloud-config-bus/README.md

Java
1
https://gitee.com/HK-Poc/spring-config-service.git
git@gitee.com:HK-Poc/spring-config-service.git
HK-Poc
spring-config-service
spring-config-service
master

搜索帮助