1.概述
Nacos采用的是一个长轮训的方式向NacosServer发起配置更新。
长轮训就是客户端发起一轮请求到服务器端,当服务器的变更没有任何变更的时候,这个连接会一直打开,一直到服务端有配置变更或者连接超时之后返回。
Nacos客户端需要获取服务端的一个变更的配置,前提是需要一个比较,也就是说拿客户端本地的配置信息和服务端的配置信息进行比较,一旦发现和服务器的配置有差异,那么就表示服务端的配置有更新,于是需要把变更的配置拉取到本地。
在这个过程中有可能因为客户端的配置比较多,导致比较的时间比较长,使得配置的同步效率很低。
针对这个问题,Nacos做了2个优化
减少网络通讯的数据量。
客户端把需要进行比较的配置进行分片,每个分片大小事3000,也就是说每一次最多拿3000个配置去nacos server端进行比较。
分阶段进行比较和更新
第一个阶段:客户端把这3000个配置的key以及对应的value值的md5拼接成一个字符串,然后发送到Nacos Server端进行判断,服务端会逐个比较这些配置中md5不同的key,把存在更新的key返回给客户端