config分布式配置

解决每个项目的都有自己独立的配置文件导致代码膨胀:

通过消息总控(配置中心)与github连接,直接从github中获取需要的文件

服务端:

1.pom:

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

2.yml:uri是指配置文件的地址,search-paths是具体的目录,label是具体的分支

server:
port: 3344


spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: https://github.com/keithuddc/GlobalConfigFile.git
search-paths:
- GlobalConfigFile
label: master

eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka

 

 3.主启动:

@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class configGlobalmain3344 {
public static void main(String[] args) {
SpringApplication.run(configGlobalmain3344.class,args);
}
}

4.测试:访问地址:比如要访问master分支下的config-test.yml文件:http://localhost:3344/master/config-test.yml

 

 测试成功,那么就可以把这个配置文件应用到客户端:

客户端配置

1.pom:注意跟服务端的pom不同,没有server

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

2.bootstrap.yml,为什么要用这个配置呢?因为bootstrap.yml是系统级的配置,优先于用户级的application.yml加载.

spring:
application:
name: config-client
cloud:
config:
label: master # 分支名称
name: config #配置文件名称
profile: test # 读取的后缀,上述三个综合,为master分支上的config-test.yml的配置文件被读取,http://localhost:3344/master/config-dev.yml
uri: http://localhost:3344 #配置中心的地址

eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka
server:
port: 3366

3.主启动:

@SpringBootApplication
@EnableDiscoveryClient

4.把这个配置以rest形式暴露,我在配置文件config-test.yml中有config:info这个属性,所以直接访问即可,要是没有就会报注入错误:

Could not resolve placeholder 'config.info' in value "${config.info}"

 

 5.测试:

 

 问题:当github上的配置文件修改并提交时,配置中心也就是配置服务端可以通过刷新获取最新数据,但是3366客户端就只能重启才能获取到最新配置

下面针对上边这个问题进行修改:

 config客户端实现刷新功能:

1.pom:

引入actuator包

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.改yml对外暴露监控端口:

management:
endpoints:
web:
exposure:
include: "*"

3.controller加注解@RefreshScope

4.测试:

修改github上的config-test文件,加上一个version版本号

 这里还有一步,就是发送一个post请求:用来刷新代码的,需要安装一个curl工具:

安装方法参考下面链接:

https://jingyan.baidu.com/article/e3c78d64897d303c4c85f52d.html##1

 

 

 5.刷新3344和3366项目,看看能不能出来这个版本号:

3344:3366:

现在配置差不多完成了,但是 还有个问题,如果有100台机器,还会这样挨个post请求吗?不会的,下面整合一个bug消息总线

进行项目广播配置。

 

posted @ 2020-06-01 11:43  ~笑春风~  阅读(153)  评论(0)    收藏  举报