【发布时间】:2019-07-31 12:44:34
【问题描述】:
我们有一个系统 client <-> server 在 HTTP1.1 上工作。客户端正在向服务器发出数百个(有时数千个)并发请求。
由于浏览器对HTTP1.1连接的默认限制,客户端实际上是分批(6~8)个并发请求发出这些请求,我们认为如果我们可以增加并发请求的数量,我们可以获得一些性能提升.
我们将系统转移到通过 HTTP2 工作,我们看到客户端同时请求所有请求。
现在的问题正好相反:服务器处理不了这么多并发请求。
我们如何将客户端同时执行的并发请求数限制为服务器更易于管理的事情?假设是 50 ~ 100 个并发请求。
我们当时假设 HTTP2 可以让我们毕业并发数 连接:
使用 HTTP/2,客户端仍然可以完全控制服务器推送的方式 用过的。客户端可以限制并发推送的流数; 调整初始流量控制窗口来控制多少数据 首次打开流时推送;或禁用服务器推送 完全。这些偏好通过 SETTINGS 框架传达 在 HTTP/2 连接开始时,可以随时更新 时间。
也在这里:
如果可能的话,我们可以在服务器端限制这一点(我认为更易于维护)。
但看起来这些解决方案是在谈论Server Push,而我们拥有的是客户端拉动。
如果有任何帮助,我们的架构如下所示:
Client ==[http 2]==> ALB(AWS Beanstalk) ==[http 1.1]==> nginx ==[http 1.0]==> Puma
【问题讨论】: