Nacos 和 Apollo中的 长轮询 定时机制,太好用了~

Nacos1.x配置中心客户端长轮询原理 nacos1.x配置中心巧妙的长轮询设计 阅读详情

今天这篇文章来介绍一下Nacos配置中心的原理之一:长轮询机制的应用

为方便理解与表达,这里把 Nacos 控制台和 Nacos 注册中心称为 Nacos 服务器(就是 web 界面那个),我们编写的业务服务称为 Nacso 客户端;

Nacos 动态监听的长轮询机制原理图,本篇将围绕这张图剖析长轮询定时机制的原理:

ConfigService 是 Nacos 客户端提供的用于访问实现配置中心基本操作的类,我们将从 ConfigService 的实例化开始长轮询定时机制的源码之旅;

1. 客户端的长轮询定时机制

我们从NacosPropertySourceLocator.locate()开始【断点步入】:

1.1 利用反射机制实例化 NacosConfigService 对象

客户端的长轮询定时任务是在 NacosFactory.createConfigService() 方法中,构建 ConfigService 对象实例时启动的,我们接着 1.1 处的源码;

进入 NacosFactory.createConfigService():

public static ConfigService createConfigService(Properties properties) throws NacosException {
    //【断点步入】创建 ConfigService
    return ConfigFactory.createConfigService(properties);
}

进入 ConfigFactory.createConfigService(),发现其使用反射机制实例化 NacosConfigService 对象;

1.2 NacosConfigService 的构造方法里启动长轮询定时任务

进入 NacosConfigService.NacosConfigService() 构造方法,里面设置了一些更远程任务相关的属性;

1.2.1 初始化 HttpAgent

MetricsHttpAgent 类的设计如下:

ServerHttpAgent 类的设计如下:

1.2.2 初始化 ClientWorker

进入 ClientWorker.ClientWorker() 构造方法,主要是创建了两个定时调度的线程池,并启动一个定时任务;

进入 ClientWorker.checkConfigInfo(),每隔 10s 检查一次配置是否发生变化;

  • cacheMap:是一个 AtomicReference<Map<String, CacheData>> 对象,用来存储监听变更的缓存集合,key 是根据 datalD/group/tenant(租户)拼接的值。Value 是对应的存储在 Nacos 服务器上的配置文件的内容;
  • 长轮询任务拆分:默认情况下,每个长轮询 LongPollingRunnable 任务处理3000个监听配置集。如果超过3000个,则需要启动多个 LongPollingRunnable 去执行;

1.3 检查配置变更,读取变更配置 LongPollingRunnable.run()

因为我们没有这么多配置项,debug 不进去,所以直接找到 LongPollingRunnable.run() 方法,该方法的

nacos配置中心源码分析——长轮询动态刷新 所谓动态刷新是指nacos用户交互页面发布或者更新配置,在spring cloud微服务中是如何感知的,并且如何动态刷新配置?用户操作nacos UI交互页面发布配置请求,请求url:config/v1/cs/configs。请求来到nacos服务端的ConfigController.publishConfig()方法,由于没有选择beta发布,所以betaIp为空,tag好像是跟容器部署有关。所以直接执行如下if里面两个核心方法:persistService.insertOrUpdate()和Config 阅读详情

相关推荐

nacos+定时任务动态配置 @Scheduled定时器

maven 依赖添加 该依赖可以动态监听nacos配置文件修改 <dependency> <groupId>com.purgeteam</groupId> <artifactId>dynamic-config-spring-boot-starter</artifactId> <version>0.1.1.RELEASE</version> </dependency> 启动类加注解 @Enable..

可爱猪猪 5346

Nacos 和 Apollo中的 长轮询 定时机制,太好用了

为方便理解与表达,这里把Nacos控制台和Nacos注册中心称为Nacos服务器(就是web界面那个),我们编写的业务服务称为Nacso客户端;Nacos动态监听的长轮询机制原理图,本篇将围绕这张图剖析长轮询定时机制的原理​ConfigService是Nacos客户端提供的用于访问实现配置中心基本操作的类型,我们将从ConfigService的实例化开始长轮询定时机制的源码之旅;1.客户端的长轮询定时机制httpshttpshttpshttps。...

m0_69305074的博客 1163

Nacos和Apollo 为什么看上了”长轮询“?

Nacos和Apollo 为什么看上了”长轮询“?

836

不同比例尺地质数据共享

包含20w、25w、100w、250w比例尺地质数据共享。

sinat_38828898的博客 2326

自动驾驶仿真基础:使用Veristand自定义CAN报文的Checksum和Counter

文章目录前言一、关于Checksum的组成形式二、自定义的Checksum方法一1、实现的主要流程图如下:2、方法一的主要算法参考三、自定义的Checksum方法二1、软件及插件下载;2、Custom device的使用;4、Veristand调用Custom Device;5、Veristand发送信号值;6、部署到实时机; 前言 1、现在很多的车厂对于车辆的安全机制非常重视,车厂通过对发送的CAN数据进行加密而形成一种保护机制,而Checksum和Counter是其中的一种保护介质,当CAN报文数据的

zataji的博客 1万+

SAP 中租赁资产的实现需区分经营租赁与融资租赁,核心围绕资产主数据配置、折旧与利息设置、科目分配及业务操作展开

摘要:SAP系统租赁资产管理需区分经营租赁与融资租赁,通过SPRO配置资产主数据、折旧范围、利息计算及科目分配。关键步骤包括:激活折旧范围利息计算(OABZ)、设置租赁资产类别(OAYZ)、维护总账科目(AO90)及创建租赁资产主数据(AS01)。业务操作涵盖资产资本化(ABZON)、折旧利息过账(AFAB)、租金支付(F-53)及终止处理(ABUMN)。核心配置要点在于准确设置租赁类型、利率参数和科目联动,确保系统自动计算折旧与利息并生成正确凭证。

金牌架构师 1076

五.EtherCAT开发之STM32F407ZGt6+ LAN9253 外置EEPROM配置数据含义

EtherCAT从站简称ESC,ESC在上电过程中,会自动加载EEPROM中前7个字(1word = 2 byte)到ESC寄存器。ESC寄存器总是可以被EtherCAT主站通过EtherCAT总线访问,无论PDI接口寄存器配置什么值。EEPROM存储器中的前7个字,将决定ESC的工作模式。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 3471

清华源pip install出现ERROR: Could not find a version that satisfies the requirement的解决方案

本文主要介绍了清华源pip install出现ERROR: Could not find a version that satisfies the requirement的解决方案,希望能对学习python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

谱方法学习笔记-下(超详细)

《谱方法学习笔记》深入介绍了傅立叶谱方法在解决偏微分方程问题中的理论和实践,提供了清晰的步骤、Matlab代码以及对一维、二维波动方程等不同问题的解析,适合对谱方法感兴趣的学习者。

图灵的猫的博客 2853

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9526

【SpringCloud】5、Spring Cloud Gateway网关路由规则

Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。

JACKAL 3万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 一行代码制作数据分析交叉表,太便捷了
下一篇: 扒一扒ReentrantLock以及AQS实现原理
JavaShark
博客等级 码龄4年 184粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值