1

是什么

就是请求不立马断开,而是保活一段时间。超时之后,断开,然后客户端再次和服务器建立连接。

http请求是请求/响应,完成之后,立马断开。

所以,长轮询的意思就是,长的意思,是保活长连接,即一般是很短的一段时间内(比如1m)不断开,在这1m时间内,服务器如果有新数据就主动写到客户端。轮询的意思是,1m之后,连接断开,客户端再次和服务器建立连接,也就是多次不停地建立1m的连接。

应用场景

apollo

有了1m的长连接,为什么还要5m一次的短连接,防止1m长连接的期间,服务器push功能失效,相当于是一个备用机制。


rocketmq

也是一样,客户端和服务器建立长连接(也是短时间内的保活长连接),在每次的长连接期间,服务器如果有数据就主动写数据到客户端。


总结

除了长轮询机制一样,还有注册中心也是一样,apollo和rocketmq都使用了注册中心,其实所有的中间件基本上都是这样,如果要集群(一般多主多从),就要搞注册中心。

好处

push模型的好处是实时写新的数据到客户端。pull模型的好处是请求/响应模式,完成之后就断开,而不是像push模型一样,一直长连接不断开,如果每个连接都不断开,那么服务器连接数量很快会被耗尽。

长轮询的好处是,既有push模型的服务器实时写数据到客户端,又有pull模型的避免一直长连接。


Java个体户
17 声望4 粉丝

Java个体户