短连接 & 长连接
短连接在每次通信都需要建立一个新的连接,并在通信结束后关闭,例如传统的 HTTP 通信。短连接不会占用服务器和客户端的资源,但是由于每次建立和关闭连接都会产生一定开销,在需要频繁通信的应用中性能较低。
长连接在客户端和服务器建立一次连接后保持打开状态,多次通信可以共享同一个连接,例如 IM 通信。长连接不必反复建立和关闭连接,但是会占用服务器和客户端的资源。
短轮询 & 长轮询
短轮询是客户端发出请求后服务器立即响应。客户端在收到响应后,立即发送下一个请求。由于频繁请求和响应,会增加服务器和客户端的网络开销,通常用定期轮询代替。
长轮询运行服务器不立即响应客户端的请求,可以等到有新数据可用或者请求等待超时后再响应。长轮询减少了不必要的请求和响应,减少了服务器负载,又能保证数据的实时性。
RocketMQ 在消费端采用了长轮询的机制,在保证了消息实时性情况下,也避免了服务端负载问题。