springcloudalibaba nacosclient自动获取配置 启动流程

nacos更新时报错异常排查 事情是这样的,近期公司业务原因,要在一个项目中加入多数据源配置,加就加吧,也不麻烦,可是加完多数据源之后业务没出问题,却发现刷新nacos时,原本可以正常refresh值的,现在出现异常报错,只能通过重启保证重新加载更新过的nacos的值了。那怎么办,自己作的死要自己解决。 异常报错 数据源DataSource配置 问题分析 问题解决 如果没耐性的,可以直接拉到最低端看问题解决吧。 异常报错 2021-04-13 17:02:52.962 [tid: ][skId: ] [com.alibaba. 阅读详情

springcloudalibaba nacos客户端 自动获取配置 启动流程
1.spring.factories中有引导程序配置项:org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration,\
org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration 
引导程序配置项相当于application中的autoconfiguration配置,在bootstrap中使用。

2.com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration会注册2个bean
nacosConfigProperties
nacosPropertySourceLocator
3.nacosConfigProperties会自动加载spring.cloud.nacos.config的配置项目,这里定义了nacos config服务器的连接信息, 需访问的配置项信息
4.nacosPropertySourceLocator的locate方法会实例化一个configService(),创建nacosPropertySourceBuilder,
nacosPropertySourceBuilder里封装了对nacos config服务器的访问,通过配置属性生成nacos配置项名称
locate方法由bootstrap上下文的SpringApplication.prepareContext方法中的applyInitializers里的PropertySourceBootstrapConfiguration.initialize调用

4.1实例化一个configService
创建一个httpagent
启动agent,这里如果只配置了endpoint,会启动定时器访问地址服务器来刷新服务器地址列表
创建一个ClientWorker,这里后面会用到
4.1.1实例化ClientWorker
clinetworker里创建了2个调度线程池,并启动 固定延迟策略(上一个任务执行完之后延迟多少时间) 调度长轮询管理器线程

长轮询管理器线程池,通过执行checkConfigInfo来管理 长轮询线程池 执行longPolling线程,(线程数量=cacheMap的配置数量/每个长轮询线程处理的配置数量)
cacheMap在ApplicationReader事件中由NacosContextRefresher监听修改,这里为空,暂时不会启动长轮询线程

长轮询线程池,执行longPolling线程(自注册的线程,每次执行完会重新注册一个任务),检测配置变更,并更新缓cacheMap
1.checkLocalConfig
2.checkUpdateDataIds
先获取有变化的ID,checkUpdateDataIds
然后轮询获取配置,getServerConfig

长轮询管理器线程池线程名
com.alibaba.nacos.client.Worker.${agentName}
长轮询线程池线程名
com.alibaba.nacos.client.Worker.longPolling.${agentName}

5.分别加载配置
loadSharedConfiguration(composite);  // 加载nacos共享配置
loadExtConfiguration(composite); //加载ext配置
loadApplicationConfiguration(composite, dataIdPrefix, nacosConfigProperties, env);//加载应用配置,默认是刷新的
最终调用loadNacosDataIfPresent访问nacos服务器获取配置项(不可刷新的NacosPropertySourceRepository优先,这里刚启动肯定为空)
以上加载的配置项目保存在composite(CompositePropertySource)中,名字为NACOS
6.loadNacosDataIfPresent
通过nacosPropertySourceBuilder.build获取nacosPropertySource并添加到composite的最前面
7.nacosPropertySourceBuilder.build
通过loadNacosData获取Properties创建nacosPropertySource,并添加到仓库中
8.loadNacosData
通过configService.getConfig获取配置数据,并根据扩展名解析配置数据得到Properties
9.getConfigInner
优先读取本地配置(故障转移文件nacos/config/${agentName}_nacos/data/config-data/${group}/${dataId})LocalConfigInfoProcessor.getFailover,非空就返回
读取nacos服务器配置
worker.getServerConfig 成功就返回
如果是鉴权失败就抛出异常,其他失败则读取快照 (快照文件nacos/config/${agentName}_nacos/snapshot/${group}/${dataId})
LocalConfigInfoProcessor.getSnapshot,返回

10.worker.getServerConfig
读取nacos服务器配置 /v1/cs/configs,写快照文件
 

nacos从本地切换到远程服务器上时报错:客户端端未连接,Client not connected 阅读详情

相关推荐

Nacos1.x配置中心客户端长轮询原理

nacos1.x配置中心巧妙的长轮询设计

endwas 2965

nacos连接cpu暴增

nacos连接cpu暴增 一个项目遇到一个nacos问题,经常导致cpu暴增从而死机 com.alibaba.nacos.client.Worker.fixed-10.254.108.164_88-c8adf6e3-cc0a-4ff0-a91e-854f5c670690" #46404 daemon prio=5 os_prio=0 tid=0x00007f20f005e800 nid=0x7dc...

海的博客 5870

环境配置 |Jupyter lab/Jupyter Notebook 安装与设置

ipynb使用Jupyterlab/Jupyter Notebook 来编写程序时的文件,在使用时,可以现转换为标准的.py的python文件。

weixin_44649780的博客 5722

连接Nacos的服务程序快速无限打日志longPolling、ClientWorker

一个微服务环境里很多服务启动以后疯狂打日志,日志是从nacos更新配置。[com.alibaba.nacos.client.Worker.longPolling.fixed-10.***.***.***_***-public] ClientWorker INFO -[fixed-10.***.***.***_**-pub lic] [data-received] dataId=yourDataId, group=yourGroup, tenant=public, md5=5d3ae422a85ee3679

Oxye 2785

SpringCloudAlibabaNacosClient自动注册

概要 此篇博客重点将是SpringCloudAlibabanacos的客户端是怎么在启动的时候,把自己的服务注册到注册中心的。 流程图 下面是流程图 步骤 maven仓库地址

吐蕃圣僧 906

Nacos介绍及安装启动

Nacos = 服务注册中心 + 配置中心 = Eureka + Spring Cloud Config + SpringCloud Bus Nacos 官网nacos详细简介。

weixin_43811057的博客 7085

SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现

目录前言环境Nacos是什么?服务发现原理搭建 Nacos ServerNacos Server 下载地址Nacos Server 的版本选择运行 Nacos ServerNacos Client 注册user-center 用户中心微服务注册content-center 内容中心微服务注册服务发现测试 前言 记录下Nacos的整合过程 环境 Win 10 + Spring Cloud 2020.0.1 + Spring Cloud Alibaba 2021.1 + Nacos 2.0.0 Nacos是什

Maggieq8324的博客 714

SpringCloud Alibaba实战和源码(1)Nacos

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

渔阳的博客 1116

Springboot整合nacos报错无法连接nacos

报错信息:Nacos com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING。我的错误原因是:使用的springcloudalibaba2.2.6.RELEASE版本,而nacos注册中心版本过高。关于这个报错的原因有很多:如Nacos启动、网络问题、配置问题、版本不兼容问题等,我的报错原因主要是版本不兼容。下面是官网给出的版本对照图。

m0_62332728的博客 2592

Nacos注册中心原理解析

作为注册中心简介和服务注册简流程

qq_45003354的博客 1285

[Alibaba微服务技术入门]_服务配置中心入门_第5讲

什么是服务配置中心 Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置 Spring Cloud Alibaba Nacos Config 是 Config S...

自强不息,厚德载物,未来可期 144

Spring Cloud Alibaba — Nacos 构建服务注册中心

Spring Cloud Alibaba — Nacos 构建服务注册中心

赵士杰——成功并非一蹴而就,而是在持之以恒的努力中逐渐实现。 776

Nacos服务端+集群搭建

Nacos服务端+集群搭建 每天多学一点点~ 话不多说,这就开始吧… 文章目录Nacos服务端+集群搭建1.前言2.下载3.windows环境启停4.linux环境启停5.Nacos client服务端的搭建6.Nacos集群搭建6.1 启动nginx6.2 安装 我们的nacos­server7.结语 1.前言 阿里,阿里爸爸,阿里爸爸就是牛批~ 2.下载 下载地址:https://github...

爆裂无球的程序空间 1907

如何解决后台日志显示Nacos客户端不断重复拉取配置的问题

文章目录如何解决后台日志显示Nacos客户端不断重复拉取配置的问题问题描述问题原因解决方法临时解决方法永久解决方法 如何解决后台日志显示Nacos客户端不断重复拉取配置的问题 问题描述 后台服务日志显示Nacos客户端(每个后台服务就是一个Nacos客户端)不断从Nacos服务端拉取配置。 日志示例: 2020-09-01 08:19:55.942 [com.alibaba.nacos.client.Worker.longPolling ...] INFO com.alibaba.nacos.client

锐意工作室 1万+

springboot源码解读之使用springcloud加载配置

前言 前面一篇文章https://blog.csdn.net/hongxingxiaonan/article/details/105129792讲了springboot如何加载本地配置。默认情况下,springboot会加载classpath下的application.properties等文件。可能会遇到有的工程里配置了bootstrap.properties也是生效的,但并没有自定义spri...

hongxingxiaonan的专栏 1480

SpringCloudAlibabanacos

同一个服务会存在多个节点;一部分节点的服务器存于上海,一部分节点的数据存于广州等,每个节点都属于特定的区域或者机房内(也可简称本地集群服务器)。

weixin_43054590的博客 2170

Linux nacos客户端异常排查记录 NacosPropertySourceBuilder : parse data from Nacos error

尝试修改系统编码

nornron 2332

Spring Cloud-8-BootstrapApplicationListener有条件创建多个application context

SpringCloud应用启动时,使用的还是Spring Boot,下面这个run()方法,createBootstrapContext()这个是Spring Boot的引导上下文,每个Spring Boot应用都会有,而在prepareEnvironment()方法中,会创建一个另外一个cloud 的上下文。org.springframework.cloud.bootstrap.BootstrapApplicationListener#onApplicationEvent()方法做的事情是。

诗人不写诗 3595

【问题解决】 NacosPropertySourceBuilder :parse data from Nacos error,dataId:pearl-test.yaml,data:server:

问题场景 测试spring cloud项目,使用了nacos作为配置中心,服务启动后,加载远程配置,IDEA启动正常,但打包后采用本地java -jar启动发生配置文件解析异常,报错如下 2020-09-16 16:46:28.542 ERROR 4452 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : parse data from Nacos error,dataId:pearl-common.yaml,data:spr

记录知识、锤炼自我 1万+

手把手教你学Simulink--基于未来出行解决方案的场景实例:电动飞行汽车(eVTOL)的动力系统建模与仿真

电动垂直起降飞行器零道路拥堵:三维空间飞行绿色低碳:全电驱动,零排放快速响应:城市内15分钟直达低噪音:相比直升机↓20dB📊 预测:2030年全球eVTOL市场规模将超300亿美元,中国、美国、欧洲加速适航认证。本文通过,构建了电动飞行汽车(eVTOL)动力系统高压电池系统建模电力电子(DC-DC、逆变器)实现PMSM电机+螺旋桨推进系统搭建完整飞行任务动态仿真性能KPI评估与优化。

MHD0815的博客 413

传世烽火引擎2.0源码登陆器配置器源码,+狂人引擎源码打包下载

传世烽火引擎2.0源码登陆器配置器源码,+狂人引擎源码打包下载

上一篇: 耦合性(或称“耦合度”)
下一篇: k8s部署-kubeamd自动部署脚本
half000
博客等级 码龄18年 7粉丝 38原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值