谈谈你对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天前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
115 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
18天前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
118 10
|
1月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
48 5
|
1月前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
159 11
|
1月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
37 4
|
1月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
53 3
|
1月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
64 3
|
5月前
|
Java Nacos 数据库
使用 nacos 搭建注册中心及配置中心
使用 nacos 搭建注册中心及配置中心
110 5
|
5月前
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
184 3
|
1月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
102 1
Nacos配置中心