异步 HTTP 有什么好处
What are the benefits of Asynchronous HTTP
Q.1 我知道当我们谈论 synchronous HTTP
时,对于每个请求,一个线程可能会产生并被阻塞,所以当同时连接数增加,我们将遇到大量的线程开销。
异步模式将容忍一些开销轮询响应所需的东西,但线程数量急剧减少。
我也知道 Asynchronous HTTP
会让我们采取行动,即使交付的响应不是完整的响应(只收到响应的一部分),这适用于实时操作。
但是 Async HTTP
的其他好处是什么?
Q.2 我的服务器只有一个客户端,但该客户端每秒发送数千个请求。我将阻塞 IO (Synchronous HTTP
) 与轻量级线程 (Quasar
) 结合使用。我应该切换到异步吗?这样做对我有什么好处?
首先,我不认为我们谈论 "asynchronous HTTP" 是因为含义不明确。
有 2 种情况同时提到异步和 http:
- 对于客户,它是 asynchronous request;
- 对于服务器,它是异步的I/O;
我觉得你的问题其实是关于后者的
A.1 异步的好处I/O
- 它可以同时处理大量clients/requests。参见 C10k problem。
- 当每个请求花费较长的等待时间(等待磁盘 I/O、数据库等...)时,它可以重用空闲线程以获得更高的吞吐量。
A.2 如果你的场景符合以上任何一个,你可以切换。
Q.1 我知道当我们谈论 synchronous HTTP
时,对于每个请求,一个线程可能会产生并被阻塞,所以当同时连接数增加,我们将遇到大量的线程开销。
异步模式将容忍一些开销轮询响应所需的东西,但线程数量急剧减少。
我也知道 Asynchronous HTTP
会让我们采取行动,即使交付的响应不是完整的响应(只收到响应的一部分),这适用于实时操作。
但是 Async HTTP
的其他好处是什么?
Q.2 我的服务器只有一个客户端,但该客户端每秒发送数千个请求。我将阻塞 IO (Synchronous HTTP
) 与轻量级线程 (Quasar
) 结合使用。我应该切换到异步吗?这样做对我有什么好处?
首先,我不认为我们谈论 "asynchronous HTTP" 是因为含义不明确。
有 2 种情况同时提到异步和 http:
- 对于客户,它是 asynchronous request;
- 对于服务器,它是异步的I/O;
我觉得你的问题其实是关于后者的
A.1 异步的好处I/O
- 它可以同时处理大量clients/requests。参见 C10k problem。
- 当每个请求花费较长的等待时间(等待磁盘 I/O、数据库等...)时,它可以重用空闲线程以获得更高的吞吐量。
A.2 如果你的场景符合以上任何一个,你可以切换。