前言
Nacos 1.X版本 是长轮询
Nacos 2.X版本 是GRPC
长轮询
概念
客户端会轮询向服务端发出一个长连接请求,这个长连接最多30s就会超时,服务端收到客户端的请求会先判断当前是否有配置更新,有则立即返回,如果没有服务端会将这个请求拿住“hold”29.5s加入队列,最后0.5s再检测配置文件无论有没有更新都进行正常返回,但等待的29.5s期间有配置更新可以提前结束并返回。
对比
长轮询 | 长连接 | 轮询 |
综合长连接和轮询 | 客户端和服务端建立TCP长链接,当服务端数据发生变化,立即通过这个已经建立好的长连接将数据推送到客户端。 | 客户端轮询,通过不断轮询的方式检查数据是否发生变化,变化的话就把数据拉回来 |
长链接的优点是实时性,一旦数据变动,客户端立即就能感知到。但是缺点就是服务端需要维护大量的TCP连接这会占用大量的内存和CPU资源,同时也容易受到网络抖动等因素的影响。
轮询的优点是实现比较简单,但弊端也显而易见,轮询无法保证数据的实时性,并且轮询方式对服务端还会产生压力