Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
2017-12-23 00:00
1101 查看
摘要: 使用 `Refresh` 实现主动获取 `Config Server` 配置服务中心的最新配置
上一篇文章讲了
值是
启动该工程后,访问服务注册中心,查看服务是否都已注册成功:http://localhost:8761/
上一篇文章讲了
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声明的类上,否则
refresh之后
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/helloF5 刷新
发现没有得到最新的值刷新配置
通过Postman发送POST请求到:http://localhost:8081/refresh,http://localhost:8083/refresh,我们可以看到以下内容:访问服务
命令窗口,通过curl http://127.0.0.1:9000/hello[/code] 访问服务,或者在浏览器访问http://127.0.0.1:9000/helloF5 刷新
发现:服务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(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
- Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务
- Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- SpringCloud: 高可用的分布式配置中心(Spring Cloud Config)
- 第七章:高可用的分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- Spring Cloud学习:05分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- spring-cloud中config配置中心使用(基于eureka的高可用)
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)