一线大厂面试真题——Nacos配置更新的工作流程

目录

概述

问题解答

面试点评


概述

Nacos作为阿里的开源中间件,在加入到Spring Cloud生态以后。不管是作为配置中心还是注册中心,它的简单易用的特性,被广泛适用在各个互联网公司里面。

然后大家会发现Nacos相关的面试也越来越多了。

天,一个工作了8年的,被面试官问到了这样一个问题:

“请你详细说一下Nacos客户端是如何实现配置的动态更新的”。

问题解答

首先,Nacos是采用长轮训的方式向Nacos Server端发起配置更新查询的功能。

所谓长轮训,(如图)就是客户端发起一次轮训请求到服务端,当服务端配置没有任何更的时候,这个连接一直打开。

直到服务端有配置或者连接超时后返回。

Nacos Client端需要获取服务端变更的配置,前提是要有一个比较,也就是拿客户端本地的配置信息和服务端的配置信息进行比较。

一旦发现和服务端的配置有差异,就表示服务端配置有更新,于是把更新的配置拉到本地

在这个过程中,有可能因为客户端配置比较多,导致比较的时间较长,使得配置同步较慢的问题。

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

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

2.   分阶段进行比较和更新

第一阶段,客户端把这3000个配置的key以及对应的value值的md5拼接成一个字符串,后发送到Nacos Server端进行判断,服务端会逐个比较这些配置中md5不同的key,把存在更新的key返回给户端。

第二阶段,客户端拿到这些变更的key,循环逐个去调用服务单获取这些key的value值。

这两个优化,核心目的是减少网络通信数据包的大小,把一次大的数据包通信拆分成了多次小的数据包通信。

虽然会增加网络通信次数,但是对整体的性能有较大的提升。

最后,再采用长连接这种方式,既减少了pull轮询次数,又利用了长连接的优势,很好的实现了配置的动态更新同步功能。

面试点

Nacos里面有很多好的设计理念可以值得我们去研究和学习。

我们不一定未来会去做源码级别的开发,但是一定会参与架构方案的设计

所以还是议大家去花一些时间,下沉到技术的底层,从而提升自己的核心竞争力。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值