前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈你对Nacos配置动态更新原理的理解,这道题一定要会!

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

作者头像
Tom弹架构
发布2023-04-28 11:09:22
2.1K0
发布2023-04-28 11:09:22
举报
文章被收录于专栏:Tom弹架构Tom弹架构

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

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

1 原理分析

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

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

ENTER TITLE

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

ENTER TITLE

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

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

ENTER TITLE

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

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

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

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

另外,5/6/7月份资料文档已打包,包含如下↓(还在持续更新中!):

①100道最新大厂经典面试题解析资料文档!

②20万+字Java面试题解析和配套答案!

③从应届生到高级开发都使适用的简历模板!

④从入门到精通的架构师学习路线图!

扫描二维码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom弹架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档