Spring Cloud学习--配置中心(Config)
来源:互联网 发布:婚礼邀请函制作软件 编辑:程序博客网 时间:2024/05/01 17:45
本博目录:
- 一 Spring Cloud Config简介
- 二 编写 Config Server
- 三 编写Config Client
- 四 使用refresh端点手动刷新配置
- 五 Spring Config Server与Eurelka配合使用
- 六 Config Server的高可用
一、 Spring Cloud Config简介
微服务要实现集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求,Spring Cloud Config同时满足了以上要求。Spring Cloud Config 分为Config Server和Config Client两部分,是一个可以横向扩展,集中式的配置服务器, 默认使用Git存储配置内容。
Spring Cloud Config 原理图如图所示:
二、 编写 Config Server
1.先在github上新建一个仓库,添加配置文件。
2.新建一个spring boot 项目,pom.xml中添加如下依赖:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <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> </dependencies>
3.启动类上添加@EnableConfigServer注解,表示这个类是一个Config Server
@SpringBootApplication@EnableConfigServerpublic class SpringConfigServerApplication { public static void main(String[] args) { SpringApplication.run(SpringConfigServerApplication.class, args); }}
4.配置application.yml文件
server: port: 8001spring: cloud: config: server: git: uri: https://github.com/songxiansen521/spring-cloud-config-repo.git username: ****your git name**** password: ****your git pw****
5.启动项目,访问http://localhost:8001/microservice-foo/dev,看到如下页面,Config Server 配置成功。
6.关于Config Server的端点。
可以使用Config Server的端点获取配置文件的内容,映射规则如下:
/{application}/{profile}[/{label}]
本例: http://localhost:8001/microservice-foo/dev
/{application}-{profile}.yml/{application}-{profile}.properties
本例:http://localhost:8001/microservice-foo.properties
/{label}/{application}-{profile}.yml/{label}/{application}-{profile}.properties
本例: http://localhost:8001/config-label-v1.0/microservice-foo-dev.properties
三 编写Config Client
1.新建spring boot 项目,添加如下依赖:
<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.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
2.编写配置文件application.yml
server.port=8002
3.编写配置文件bootstrap.yml。配置在bootstrap.xml中的属性有更高的优先级,默认情况下不会被本地覆盖。
spring: application: #对应config server中配置文件的{application} name: microservice-foo cloud: config: #访问config server的地址 uri: http://localhost:8001 #对应config server中配置文件的{profile} profile: dev #对应config server中配置文件的{label} label: master
4.添加Controller类,
package com.swc.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;/** * Created by chao on 2017-11-8. */@RestControllerpublic class ConfigClientController { @Value("${profile}") private String profile; @GetMapping("/getProfile") public String hello(){ return this.profile; }}
4.启动应用,访问http://localhost:8002/getProfile,得到如下页面,说明Client能成功通过Config Server获取Git仓库中对应环境的配置。
四、 使用/refresh端点手动刷新配置
很多时候,需要在运行期间动态调整配置,可以使用/refresh 实现微服务配置的刷新。
在上面Config Client项目中,我已经添加了一个依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>
在controller上添加@RefereshScope,该注解会在配置更改时得到特殊的处理。
package com.swc.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;/** * Created by chao on 2017-11-8. */@RestController@RefreshScopepublic class ConfigClientController { @Value("${profile}") private String profile; @GetMapping("/getProfile") public String hello(){ return this.profile; }}
3.启动项目,http://localhost:8002/getProfile 访问修改Git仓库中配置文件内容,再次访问,发现结果没变化。
这时,就需要手动刷新:以POST请求,访问http://localhost:8001/refresh
第三次访问,结果如图所示,配置刷新
五、 Spring Config Server与Eurelka配合使用
将Config Server 和 Config Client都注册到Eureka Server上。
修改 Config Client
spring: application: #对应config server中配置文件的{application} name: microservice-foo cloud: config: #访问config server的地址 #uri: http://localhost:8001 #对应config server中配置文件的{profile} profile: dev #对应config server中配置文件的{label} label: master discovery: #表示使用服务发现组件中提供的Config Server,默认是false #开启通过服务发现组件访问Config Server的功能 enabled: true #指定Config Server在服务发现组件中的serviceId 默认是configserver service-id: microservice-config-server-eurekaeureka: client: service-url: defaultZone: http://localhost:8888/eureka/
修改Config Server
server: port: 8001spring: appliation: name: microservice-config-server-eureka cloud: config: server: git: uri: https://github.com/songxiansen521/spring-cloud-config-repo.git username: ***your git name*** password: ***your git pw***eureka: client: service-url: defaultZone: http://localhost:8888/eureka/
启动Eureka Server,Config Server和Config Client三个项目, 可获取到git仓库中配置文件的内容。
六、 Config Server的高可用
Config Server的高可用可以借助负载均衡实现,其原理图如下:
Config Server的高可用也可借助Eureka实现。
- Spring Cloud学习--配置中心(Config)
- 配置中心:Spring Cloud Config
- SpringCloud之分布式服务配置中心(Spring Cloud Config)
- 使用Spring Cloud Config搭建配置中心
- 使用Spring Cloud Config搭建配置中心
- spring cloud config统一配置中心
- Spring Cloud Config 配置中心 教程
- spring cloud config server 配置中心
- Spring Cloud入门1-config配置中心
- SpringCloud: 分布式配置中心(Spring Cloud Config)
- 分布式配置中心Spring Cloud Config初窥
- 08.Spring Cloud学习笔记之分布式配置中心Spring Cloud Config
- Spring Cloud微服务(6)之spring cloud config分布式配置中心
- Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config
- Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务
- Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
- spring cloud快速入门教程(三)配置中心spring cloud config
- 非spring 工程使用 spring cloud config配置中心
- iOS网络——AFNetworking AFHttpSessionManager源码解析
- iOS中Label的首行缩进
- 论文笔记-An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application
- 索引
- php扩展开发---使用PHP Embed SAPI实现Opcodes查看器
- Spring Cloud学习--配置中心(Config)
- 了解大数据
- 去除字符串所有换行和空格,字符串添加%
- 欢迎使用CSDN-markdown编辑器
- 命令行获取本地安全策略
- 如何修改request的parameter的几种方式
- java获取当天,前天,明天,本周,本月,本年的开始日期时间和结束日期时间
- Android判断手机ROM 手机os
- anaconda2/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found 问题的解决办法