博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
阅读量:6544 次
发布时间:2019-06-24

本文共 2658 字,大约阅读时间需要 8 分钟。

上一篇文章讲了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

添加依赖

org.springframework.boot
spring-boot-starter-actuator
复制代码

安全认证

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@SpringBootApplicationpublic 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

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

修改Git仓库

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

访问服务

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

发现没有得到最新的值

刷新配置

通过 Postman 发送 POST请求到:,,我们可以看到以下内容:

访问服务

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

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

源码下载

GitHub:

码云:

下篇预告

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

Contact

  • 作者:鹏磊
  • 出处:
  • Email:
  • 版权归作者所有,转载请注明出处
  • Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享

搜云库

你可能感兴趣的文章
c++学习笔记和思考
查看>>
27.Docker集群部署
查看>>
DNS保存
查看>>
IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
查看>>
第一周冲刺第五天博客
查看>>
[LeetCode]Longest Increasing Path in a Matrix
查看>>
C++基础之适配器
查看>>
集合set-深入学习
查看>>
C#语言学习——面向对象的几大原则
查看>>
zk 常用资料整理(转)
查看>>
获取历史K线数据的几个方法
查看>>
第一篇、HTML标签
查看>>
24访问者模式Visitor
查看>>
JavaScript 字符串操作
查看>>
Android中asset文件夹和raw文件夹区别
查看>>
Fuel 30 分钟快速安装openstack 分类: 软件插件学习 ...
查看>>
Python学习笔记-练习编写ATM+购物车(购物商城)
查看>>
第二章家庭作业 2.78
查看>>
【转】SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享
查看>>
2D游戏开发(1)
查看>>