nacos原理流程

Nacos采用长轮训方式实现配置动态刷新,客户端定时发送请求,服务端在配置变化时响应,避免频繁请求和维持心跳的资源消耗。同时,Nacos通过分片和MD5校验优化对比大量配置的效率,减少网络通信数据量,提高性能。
摘要由CSDN通过智能技术生成

配置动态刷新一般有两种,
要么客户端取服务端pull主动拉取 要么push,pull要频繁的请求,间隔不太好设置,时效性不太友好
要么push服务端主动推送到客户端,时效性可以,但是服务端需要维持与客户端的心跳连接,比较消耗资源维持心跳;
nacos结合两种模式,通过客户端每隔一段时间向服务端发送一次请求 10毫秒,请求时候在请求头上携带长轮询的超时时间,默认30s;服务端接收到客户端的请求时,会挂起一段时间,如果期间配置发生变化会立即响应到客户端。没有变化就重新发送请求; 这样客户端不需要频繁发送请求,服务端不需要维持心跳;实时性也有保障。服务端控制响应客户端的请求响应时间。减少无效请求。

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

Nacos Client 端需要获取服务端变更的配置,前提是要有一个比较,也就是拿客
户端本地的配置信息和服务端的配置信息进行比较。
一旦发现和服务端的配置有差异,就表示服务端配置有更新,于是把更新的配置
拉到本地。
在这个过程中,有可能因为客户端配置比较多,导致比较的时间较长,使得配置
同步较慢的问题。
于是 Nacos 针对这个场景,做了两个方面的优化。
减少网络通信的数据量,客户端把需要进行比较的配置进行分片,每一个分片大
小是 3000,也就是说,每次最多拿 3000 个配置去 Nacos Server 端进行比较。
分阶段进行比较和更新;
第一阶段,客户端把这 3000 个配置的 key 以及对应的 value 值的 md5 拼接成
一个字符串,然后发送到 Nacos Server 端进行判断,服务端会逐个比较这些配
置中 md5 不同的 key,把存在更新的 key 返回给客户端。
第二阶段,客户端拿到这些变更的 key,循环逐个去调用服务单获取这些 key 的
value 值。
这两个优化,核心目的是减少网络通信数据包的大小,把一次大的数据包通信拆
分成了多次小的数据包通信。
虽然会增加网络通信次数,但是对整体的性能有较大的提升。
最后,再采用长连接这种方式,既减少了 pull 轮询次数,又利用了长连接的优势,
很好的实现了配置的动态更新同步功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值