当前位置: 首页 > news >正文

自个做网站教程合肥企业宣传片制作公司

自个做网站教程,合肥企业宣传片制作公司,最专业的seo公司,wordpress自定义页面模板背景 最近引入了 Nacos Config 配置管理能力,说起来用法很简单,还是踩了三个坑。 Nacos Config 的 nacos 的帐号密码加密配置后,怎么解密而且在 NacosConfigBootstrapConfiguration 真正注入 Nacos Config 注入之前,而且不能触发…

背景

最近引入了 Nacos Config 配置管理能力,说起来用法很简单,还是踩了三个坑。

  1. Nacos Config 的 nacos 的帐号密码加密配置后,怎么解密而且在 NacosConfigBootstrapConfiguration 真正注入 Nacos Config 注入之前,而且不能触发 NacosDiscoveryPropertiesisNacosDiscoveryInfoChanged 变动事件。因为 NacosDiscoveryProperties 接受 NacosContextRefresher 事件时,还是从 yml 配置中获取属性,不会从 Environment 对象中加载。
  2. @RefreshScope 要想生效,该注意什么?非 shared-config 的配置变动时,要想实时生效,必须在当前应用的 bootstrap.yml 中配置 spring.application.name 属性,注册该应用在配置中心需要监听的配置。
  3. @RefreshScope + @LoadBalanced 同时使用导致 Ribbon 负载均衡失效问题。

问题一比较复杂,此处不做讨论,本文记录问题三的解决方法及个人思考。

问题

有个模块使用了 @LoadBalanced 负载均衡,通过配置控制超时时间。

引入 Nacos Config 配置后,按照常规用法,在对象上添加了 @RefreshScope 属性,希望配置变动时,能实时生效。

注入代码如下:

@Value("${rest.template.connect-timeout:10000}")
private Integer connectTimeout;@Value("${rest.template.read-timeout:10000}")
private Integer readTimeout;@Bean
@RefreshScope
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();requestFactory.setConnectTimeout(connectTimeout); //连接超时设置requestFactory.setReadTimeout(readTimeout); //读写超时设置RestTemplate restTemplate = new RestTemplate(requestFactory);logger.info("初始化负载均衡的 RestTemplate 对象 {} {}", connectTimeout, readTimeout);return restTemplate;}

修改配置中心的配置后,可以监控到 RestTemplate 会在配置变化后重新初始化了,也打印了最新的配置。
在这里插入图片描述

但真正使用这个类,调用某个服务时,出现了服务无法解析的异常:
在这里插入图片描述

分析

首先,检查调用的目标服务是否注册成功,目标服务是正常启动的。

其次,对比其他同样引用了 @LoadBalancedRestTemplate 的模块,它调用是正常的。

最后,对比异常调用和正常调用的注入代码的区别,多了一个 @RefreshScope ,调整代码验证结果正常。引入 @RefreshScope 时,在配置变化后才会发生这个异常,首次运行时正常的。

延伸搜索发现,负载均衡 RestTemplate 也有类似的问题 @scope(“prototype”)+@loadbalanced注解时负载均衡失效问题。

启示录

@LoadBalanced@RefreshScope 同时使用,首次初始化时,RestTemplate 对象具有负载均衡的能力;当 Nacos 配置中的配置变动时,这个对象会重新创建,而且此时并没有使用 @LoadBalanced 的能力,导致负载均衡失效。

就是说,这两个注解同时使用时,在不同的时机,只会有一个注解生效:

  1. 初始创建时,@LoadBalanced 生效,系统中的实例是负载均衡的 RestTemplate
  2. 当 Nacos 配置变化,NacosContextRefresher 触发通知 @RefreshScope 注解的 @Bean 对象时,重新创建的实例就是普通的 RestTemplate 了。

引入任何一个第三方工具,面对的都是黑盒,各种资料用法看似简单,一用就坑不断啊!建议 Nacos Config 官方配置给出一个使用建议 @RefreshScope 不要用在 @LoadBalanced 注解上。

最后记录一个偶然的发现:
在这里插入图片描述
选中几个图片文件后,右侧概览图是一个堆叠的图,才注意到!

http://www.yayakq.cn/news/226637/

相关文章:

  • 中国机械加工网官方网站html网站设计论文
  • 中跃建设集团有限公司网站meetsh网站建设
  • 网站 微信公众号 建设方案盘锦做网站
  • 网站建设先有域名然后呢称多网站建设
  • 免费推广网站大全蜘蛛抓取网站模块原理
  • 做 爱 网站小视频在线观看交换免费连接
  • 怎么看别人网站是怎么做的网站优化怎么做ppt
  • 安庆建设网站快速搭建网站2020
  • 学习网站建设0学起项目网络图经常被称为什么
  • 360的网站排名怎么做郑州网站建设及优化
  • 地方旅游网站开发wordpress阿里云邮箱设置
  • 网站建设讲话稿建设网站 万网
  • 制作查询网站开发移动网站
  • 最好的淘宝网站建设wordpress导航菜单404
  • 木门东莞网站建设技术支持app大全软件
  • 花卉网站建设规划书凡科网站做商城
  • 深圳前十名代运营公司江门seo推广优化
  • 在山东省建设监理协会网站婚庆公司网站建设方案
  • 简单网站建设教学视频做小程序怎么赚钱
  • 网站关键字可以修改吗Wordpress用户名是哪个
  • 网站建设7个基本流程步骤有哪些儿童网站设计
  • wordpress 大网站网站开发所需要的条件
  • 互联网推广怎么找客户seo优化策略主要包括哪些方面
  • 注销备案号 网站医院网站建设需要多少钱
  • 深圳学校网站定制设计长春做网站wang
  • e想时代官方网站网站建设dw实训总结
  • wordpress百度跟踪呼市网站seo优化工资提成怎么算
  • 网站文章内容一键排版功能长春有几个区
  • 域名购买后如何建设网站做淘宝主要看哪些网站
  • 电子书网站 自己做企业网站管理系统用户