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 轮询次数,又利用了长连接的优势,很
好的实现了配置的动态更新同步功能。

猜你喜欢

转载自blog.csdn.net/weixin_55229531/article/details/131500861