Nacos 配置服务客户端源码分析(一)

Nacos除了服务注册中心,还集成了配置中心。本篇就从Nacos的配置中心的客户端源码入手。分析Nacos客户端是如何获取到Nacos服务的配置文件的。

分析源码的第一步是找到入口,官方再次给了我们一个注册中心的样例代码,在源码的nacos-example工程中。先看下这部分的代码。

publicstaticvoidmain(String[] args)throws NacosException, InterruptedException {
    StringserverAddr="localhost";
    StringdataId="test";
    Stringgroup="DEFAULT_GROUP";
    Propertiesproperties=newProperties();
    properties.put("serverAddr", serverAddr);
    // 通过工厂模式创建了一个ConfigService服务
    ConfigServiceconfigService= NacosFactory.createConfigService(properties);
    // 获取配置信息
    Stringcontent= configService.getConfig(dataId, group, 5000);
    System.out.println(content);
    // 添加监听器,监听对应dataId,group的配置信息
    configService.addListener(dataId, group, newListener() {
        @Override
        publicvoidreceiveConfigInfo(String configInfo) {
            System.out.println("receive:" + configInfo);
        }
        @Override
        public Executor getExecutor() {
            returnnull;
        }
    });
    // 发布配置信息
    booleanisPublishOk= configService.publishConfig(dataId, group, "content");
    System.out.println(isPublishOk);
    Thread.sleep(3000);
    // 获取配置
    content = configService.getConfig(dataId, group, 5000);
    System.out.println(content);
    // 移除配置
    booleanisRemoveOk= configService.removeConfig(dataId, group);
    System.out.println(isRemoveOk);
    Thread.sleep(3000);
    // 获取配置
    content = configService.getConfig(dataId, group, 5000);
    System.out.println(content);
    Thread.sleep(300000);
}
复制代码

NacosConfigService创建

创建ConfigService实现比较简单,就是通过反射创建了NacosConfigService。只是要注意下创建NacosConfigService时会调用它的构造方法,做一些初始化的操作。

publicNacosConfigService(Properties properties)throws NacosException {
    finalNacosClientPropertiesclientProperties= NacosClientProperties.PROTOTYPE.derive(properties);
    ValidatorUtils.checkInitParam(clientProperties);
    // 初始化Namespace
    initNamespace(clientProperties);
    // 创建了一个配置过滤器链,可以采用SPI扩展机制加载对应的过滤器实现类
    this.configFilterChainManager = newConfigFilterChainManager(clientProperties.asProperties());
    ServerListManagerserverListManager=newServerListManager(clientProperties);
    // 创建了一个服务管理器,内含一个定时轮询线程池,每隔30s拉取一次服务
    serverListManager.start();
    // 创建了一个客户端工作者,包含了一个代理对象
    this.worker = newClientWorker(this.configFilterChainManager, serverListManager, clientProperties);
    // will be deleted in 2.0 later versions
    agent = newServerHttpAgent(serverListManager);
}
复制代码

在下一个篇章将重点介绍一下ClientWorker,这个是个核心,所有和服务端的交互都通过它。因为本篇主要讲解客户端注册的流程框架,先不深入细节。这里只需要知道这里进行了创建。

获取配置信息

创建ConfigService后就可以通过接口获取配置信息了。


Nacos配置中心控制台的源码分析可以帮助我们深入理解其实现细节和工作原理。以下是个大致的源码分析过程: 1. 入口类分析:首先,我们需要找到Nacos配置中心控制台的入口类。该类通常是个Spring Boot应用的启动类,负责初始化和启动整个应用。我们可以查找包含main方法的类,或者在启动脚本中找到应用的入口点。 2. 依赖分析:接下来,我们需要分析应用所依赖的第三方库和框架。查看应用的pom.xml文件或者build.gradle文件,可以获取到所依赖的各个库和对应版本。这些依赖通常包括Spring框架、Nacos客户端等。 3. 配置加载与解析:Nacos配置中心控制台需要加载和解析配置,包括数据库配置Nacos服务地址配置等。我们可以查找相关的配置文件或者代码片段,了解配置的加载和解析过程。 4. 控制器与路由:控制台通常提供了些Web接口供前端调用。我们可以查找控制器类,分析其中的方法和注解,了解各个接口的功能和路由规则。 5. 页面模板与前端交互:配置中心控制台通常包含些页面模板和与前端的交互逻辑。我们可以查找相关的HTML、CSS和JavaScript文件,分析页面的结构和交互逻辑。 6. 调用Nacos API:控制台需要与Nacos服务器进行通信,调用Nacos的API获取和修改配置信息。我们可以查找相关的API调用,了解控制台是如何与Nacos服务器进行通信的。 通过以上分析,我们可以逐步了解Nacos配置中心控制台的实现细节和工作原理。需要注意的是,具体的源码分析过程会因项目结构和代码风格而有所不同。以上只是个大致的指导,具体分析还需根据实际情况来进行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值