您的位置:首页 > 编程语言 > Java开发

Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh

2017-12-23 00:00 1101 查看
摘要: 使用 `Refresh` 实现主动获取 `Config Server` 配置服务中心的最新配置



上一篇文章讲了
SpringCloudConfig
集成
Git
仓库,配和
Eureka
注册中心一起使用,但是我们会发现,修改了
Git
仓库的配置后,需要重启服务,才可以得到最新的配置,这一篇我们尝试使用
Refresh
实现主动获取
Config Server
配置服务中心的最新配置

准备工作

把上一篇,示例代码下载,才可以进行一下的操作,下载地址在文章末尾

spring-cloud-eureka-service


spring-cloud-config-server


spring-cloud-eureka-provider-1


spring-cloud-eureka-provider-2


spring-cloud-eureka-provider-3


spring-cloud-feign-consumer


Config Client

修改第九篇文章项目

spring-cloud-eureka-provider-1


spring-cloud-eureka-provider-2


spring-cloud-eureka-provider-3


添加依赖

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

安全认证

application.properties
添加以下配置.关闭安全认证

#关闭刷新安全认证
management.security.enabled=false

值是
false
的话,除开
health
接口还依赖
endpoints.health.sensitive
的配置外,其他接口都不需要输入用户名和密码了

开启 refresh

在程序的启动类
EurekaProviderApplication
通过
@RefreshScope
开启 SpringCloudConfig 客户端的
refresh
刷新范围,来获取服务端的最新配置,
@RefreshScope
要加在声明
@Controller
声明的类上,否则
refres
h之后
Conroller
拿不到最新的值,会默认调用缓存。

package io.ymq.example.eureka.provider;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaProviderApplication {

@Value("${content}")
String content;

@Value("${server.port}")
String port;

@RequestMapping("/")
public String home() {
return "Hello world ,port:" + port+",content="+content;
}

public static void main(String[] args) {
SpringApplication.run(EurekaProviderApplication.class, args);
}
}

测试服务

按照顺序依次启动项目

spring-cloud-eureka-service


spring-cloud-config-server


spring-cloud-eureka-provider-1


spring-cloud-eureka-provider-2


spring-cloud-eureka-provider-3


spring-cloud-feign-consumer


启动该工程后,访问服务注册中心,查看服务是否都已注册成功:http://localhost:8761/



修改Git仓库

修改
Git
仓库配置,在
content=hello dev
后面加个
123456




访问服务

命令窗口,通过
curl http://127.0.0.1:9000/hello[/code] 访问服务,或者在浏览器访问
http://127.0.0.1:9000/hello
F5 刷新

发现没有得到最新的值



刷新配置

通过
Postman
发送
POST
请求到:http://localhost:8081/refreshhttp://localhost:8083/refresh,我们可以看到以下内容:



访问服务

命令窗口,通过
curl http://127.0.0.1:9000/hello[/code] 访问服务,或者在浏览器访问
http://127.0.0.1:9000/hello
F5 刷新

发现:服务8082 没有刷新到最新配置 因为没有手动触发更新



源码下载

GitHub:https://github.com/souyunku/spring-cloud-examples/tree/master/spring-cloud-config-eureka-refresh

码云:https://gitee.com/souyunku/spring-cloud-examples/tree/master/spring-cloud-config-eureka-refresh

下篇预告

留了一个悬念,
Config Client
实现配置的实时更新,我们可以使用
/refresh
接口触发,如果所有配置的更改,都需要手动触发,那岂不是维护成本很高,而使用
Spring Cloud Bus
消息总线实现方案,可以优雅的解决以上问题,下篇文章我们讲
Spring Cloud Bus
的使用,关注下文章末尾公众号,支持下作者,感谢

Contact

作者:鹏磊

出处:http://www.ymq.io

Email:admin@souyunku.com

版权归作者所有,转载请注明出处

Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring Cloud
相关文章推荐