我想知道通过执行 HTTP 批处理请求获得的性能增益。它是否只是将往返次数减少到一次而不是 n 次,其中 n 是 HTTP 请求的数量?如果是这样,我猜你可以保持 http 连接打开并通过发送你的 http 消息,完成后你可以关闭它以获得性能提升。
最佳答案
执行批处理请求的性能增益取决于您对它们执行的操作。然而,就像这里的不可知论方法一样:
如果您可以管理保持连接,是的,这意味着您不必为连接进行初始握手。这减少了一些开销,当然也节省了处理沿此连接的后续数据包所花费的时间。因此,您可以“流水线”请求并减少整体加载延迟(所有其他不考虑)。但是,HTTP1.1 中的请求仍然绑定(bind)为 FIFO,因此您可以挂断。这是批处理有用的地方。由于即使使用保持连接,您也可能会挂起(HTTP/2 将允许异步处理),您仍然可以在请求之间有一些显着的延迟。
这可以通过批处理进一步缓解。如果可能,您可以将后续请求所需的所有数据合并为一个,这样所有内容都会一起处理并作为一个响应发回。当然,与顺序方法相比,处理单个数据包可能需要更长的时间,但是每次吞吐量都会增加,因为请求-> 响应的往返延迟不会成倍增加。因此,您在请求处理速度方面获得了更好的性能提升。
当然,这种方法取决于您对请求的处理方式,以使其有效。如果您有很多用户使用大量数据执行批处理,有时批处理会给服务器带来太大压力,因此为了增加所有用户的总体并发吞吐量,您有时需要采用技术上较慢的顺序方法来平衡事情。但是,通过一些简单的监控和分析,您就会知道最好的方法。
和往常一样,不要过早优化 :)
关于performance - 批量 HTTP 请求性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189855/