HTTP 2.0与在服务器之间使用连接池的HTTP 1.1相比,对服务器之间的通信有何影响?

4

我最近在阅读关于HTTP 2.0的内容,想了解REST服务器之间是否有任何好处。 场景是A服务器向B服务器(或少数几个Server 2实例)发送REST Json消息。 通常情况下,HTTP客户端维护连接池并重用旧连接,因此如果服务器之间的通信使用HTTP 1.1,则一旦建立连接,它就会被重用。那么HTTP 2.0有什么好处呢? 而且,如果B服务器经常超时,则使用HTTP 1.1将不得不关闭并重新打开连接,这是一种负担。但是使用HTTP 2.0,情况不是一样吗?

1个回答

3
对于少量的服务器,我认为使用HTTP/1.1和HTTP/2不会有太大的区别。对于小的请求率也是如此。在这两种情况下,ServerA中的HTTP客户端都需要打开和汇集少量的连接,可能只有一个。
但是,当涉及到大量服务器(数百个或更多)或高请求率时,HTTP/1.1需要打开和维护大量的连接,而HTTP/2的多路复用功能可以真正发挥作用,使HTTP/2比HTTP/1.1更具优势。
最后,使用HTTP/2时还需要考虑请求和响应内容的大小。与HTTP/1.1不同,HTTP/2在协议级别上强制执行流量控制,如果流量控制窗口过小,这可能会导致上传/下载停滞。
幸运的是,在良好的HTTP/2客户端和服务器实现中,这应该是可配置的。对于较小的内容大小,您不应该看到流量控制机制的太多干扰,因此HTTP/2应该像HTTP/1.1一样运行。对于较大的内容大小,您需要将流量控制窗口配置为较大的值,以避免流量控制机制经常使上传/下载停滞。

谢谢您的解释。 如果B服务器经常超时,您的答案会改变吗? HTTP/2如何处理超时?在多路复用时,它是否也会关闭连接,还是会保持连接以进行后续请求/响应,即使其中一个请求超时了? - Michael P
1
使用HTTP/2多路复用,您有两个超时时间,在HTTP/1.1中基本上只有一个:请求超时和连接超时。 如果服务器超时某些请求,但其他请求正常处理,则连接将保持打开状态。 如果连接没有任何流量(即它只有一个未完成的请求和没有其他多路复用请求),那么最终请求和连接都会超时。 在HTTP/2中超时单个请求意味着服务器向客户端发送RST_STREAM帧。 - sbordet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接