【Nacos】Nacos配置不生效?

0.背景

最近我们服务开始接入Nacos作为配置中心,但是服务接入后,发现配置好像并没有拉取到或是没有生效。因此需要深入定位问题原因,这本来是我一个同事搞得,后来我觉得比较有意思,因此我跟他打赌,我帮他解决了交换一杯奶茶,最后也成功得到了奶茶哈哈~

在学习nacos之前,我们先来认识一下什么是nacos。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

说白了nacos就是实现分布式场景下的配置中心。

1.为什么需要配置中心?

在分布式微服务场景下,我们一个系统往往涉及到多个运行环境,每个运行环境有不同的配置,每个服务之间可能有公用的配置,传统单体开发我们会直接把这些配置放到项目的配置文件下,

然后随着服务启动进行加载,每次改动只需要重启一个服务即可。但是在微服务场景下,一个配置改动往往要改动很多的服务,改完后还要去打包,部署,可能只是添加一个简单的穿透账号,

就要花费一个开发人员的30分钟时间,显然,这是非常麻烦的。于是有了配置中心的出现,所有需要快速变更的配置都扔到配置中心,一旦改变直接修改配置中心,而无需重启服务。

2.常见配置中心的架构是怎样的?

图片来源极客时间

3. nacos的架构是怎样的?

在这里插入图片描述

4. Nacos源码阅读(关键部分)

<dependency>
 <groupId>com.alibaba.boot</groupId>
 <artifactId>nacos-config-spring-boot-starter</artifactId>
 <version>0.2.10</version>
 <exclusions>
 <exclusion>
 <groupId>com.alibaba.nacos</groupId>
 <artifactId>nacos-client</artifactId>
 </exclusion>
 </exclusions>
</dependency>
<dependency>
 <groupId>com.alibaba.nacos</groupId>
 <artifactId>hualala-nacos-client</artifactId>
 <version>2.0.4</version>
</dependency>

ClientWorker.java

通过rpcClient 从nacos服务端拉取配置。
在这里插入图片描述

LocalConfigInfoProcessor.java

从本地先读取配置,如果读不到,就从远程拿,读到了,就直接返回。

在这里插入图片描述

LocalConfigInfoProcessor.java

从远程拉取数据,如果拉到了,就保存到本地。

通过查看本地Linux磁盘上是否有该地址对应的文件,就可以确定是否拉取到配置了。如果没有拉取到,八成还是配置的问题,再仔细检查检查你的配置。
在这里插入图片描述

5. nacos是推数据还是拉数据呢? 答案是拉。为什么是拉?

直接推数据固然可以,但是分布式环境下服务器太多,逐个推送不太现实,浪费资源。

而且通过这种方式,一方面可以校验请求者的权限,另一方面,有时候还是需要调用配置中心的API,比如下载最新的证书之类的。

还有就是,服务启动时是需要从配置中心拉一份数据下来,如果不过不这样,就要先告诉配置中心服务启动起来了,然后配置中心不停的pub数据过来,显然有些浪费资源。

加餐:此文分析略有浅薄,Nacos还有很多设计理念和架构方式值得探究,鄙人也是初学者,如想继续深入,可以阅读源码和参考以下pdf:
Nacos原理解析

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值