谈谈你对Nacos配置动态更新原理的理解,这道题一定要会

简介: Nacos作为阿里的开源中间件在Spring Cloud生态以后,不管是作为配置中心,还是作为注册中心,因为它简单易用的特性,在互联网公司被广泛运用。随后,大家会发现Nacos相关的面试题也就越来越多了。

Nacos作为阿里的开源中间件在Spring Cloud生态以后,不管是作为配置中心,还是作为注册中心,因为它简单易用的特性,在互联网公司被广泛运用。随后,大家会发现Nacos相关的面试题也就越来越多了。


这不,又有一位工作8年的小伙伴,被问到这样一道面试题,说,请你详细介绍一下Nacos客户端是如何实现配置动态更新的。今天,我给大家分享一下我对这个问题的理解。

1 原理分析

下面我给大家分享一下我对Nacos配置动态更新原理的理解。


首先,Nacos采用的是长轮询的方式。也就是说,由Nacos Client向Nacos Server端去发起配置更新查询的请求。所谓长轮询,就是客户端发起一次轮询请求到服务器端,当服务器端的配置没有任何变更的时候,这个连接会一直打开,直到服务端有配置变更或者连接超时之后才返回。

490814690d95b9468693c898ae6b7947.jpg

Nacos Client端需要去获取服务端变更的配置内容,但前提是需要先进行比较。也就是说将客户端本地缓存的配置信息和服务器端获取的配置信息进行比较。一旦发现本地缓存的配置内容和服务端的配置内容有差异,那么,就表示服务器端的配置有更新。于是,需要把更新的配置拉到本地,在这个过程中,有可能因为客户端的配置比较多,而导致对比的时间较长,使得配置的同步效率非常低。

1006212d2bc01925888d809ee45be6d7.jpg

于是Nacos针对这样一个场景,做了两个方面的优化:


1、减少网络通信的数据量。客户端把需要进行对比的配置按配置项进行分片,每个分片的大小是3000项,也就是说每一次最多拿3000个配置项去Nacos Server端进行对比。

2198f72251e1cd247c641560bda53b14.jpg


2、分阶段进行对比和更新。第一阶段,客户端把3000个配置项的Key以及对应Value的MD5值拼接成一个字符串,然后发送到Nacos Server端进行判断,服务端会逐个比较这些配置中MD5不同的Key,把存在更新的Key返回给客户端。第二阶段,客户端拿到这些数据有变更的Key,循环逐个调用服务端,从而获取这些Key对应的Value值。


那么,这两个优化的核心目的是去减少网络通信中数据包的大小。把一次大数据包的通信拆分成了多个小数据包的通信。虽然会增加网络通信的次数,但是,提高了整体的数据传输的性能。


最后,再加上长轮询的方式,既减少了Pull的轮询次数,又利用了长轮询的优势,很好地实现了配置动态更新的同步功能。


好了,以上就是我对这个问题的理解。


我是被编程耽误的文艺Tom,关注我,面试不再难!

3c2047b0ee454886b4e6edf75f6c98c3.gif

相关文章
|
1月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
2月前
|
安全 Nacos 数据安全/隐私保护
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
本文详细介绍了如何在微服务环境下从 Nacos 1.3.0 升级到 2.3.0,并确保 Seata 各版本的兼容性。作者小米分享了升级过程中的关键步骤,包括备份配置、更新鉴权信息及验证测试等,并解答了常见问题。通过这些步骤,可以帮助读者顺利完成升级并提高系统的安全性与一致性。
89 8
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
|
2月前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
2月前
|
应用服务中间件 Nacos 数据库
Nacos 1.2.1 集群搭建(三) Nginx 配置 集群
Nacos 1.2.1 集群搭建(三) Nginx 配置 集群
54 1
|
2月前
|
缓存 Cloud Native Java
【紧急救援】Nacos配置上线后失效?手把手教你如何轻松搞定命名空间修改难题!
【8月更文挑战第15天】Nacos是关键的云原生服务管理平台,用于动态服务发现与配置管理。但在使用其管理微服务配置时,可能会遇到命名空间内的配置更新后不生效的问题。本文探讨此问题并提供解决方案。首先需确认Nacos服务器运行正常及客户端正确连接。接着检查客户端缓存配置,可通过禁用缓存或缩短缓存间隔来即时更新配置。例如,在Spring Cloud Alibaba Nacos配置中心中启用自动刷新功能,并设置每5秒拉取新配置。同时,对于新增配置项,需重启客户端应用。还需检查Nacos服务器日志排除异常,并考虑升级Nacos版本解决兼容性问题。通过这些步骤,通常可有效解决配置不生效的难题。
84 0
|
2月前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
141 0
|
2月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
151 0
|
3月前
|
Java Nacos 数据库
使用 nacos 搭建注册中心及配置中心
使用 nacos 搭建注册中心及配置中心
84 5
|
3月前
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
85 3
|
2月前
|
SQL 关系型数据库 MySQL
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
53 1