响应时间高与排队相比

问题描述 投票:1回答:3

假设我有一个由其他网络服务内部使用的webserivce,平均响应时间为1分钟。具有“同步”响应的此类服务与使请求的服务返回ID相对应的优缺点是什么,在后台处理它并使客户轮询结果?

HTTP连接是否有任何缺点,保持活动超过一分钟? TCP的默认值是否存在?

http web microservices
3个回答
0
投票

根据您的应用程序,它可能很重要。值得一提的事情是!

HTTP协议是同步的

有一种非常广泛的误解,即HTTP是异步的。 Http是同步协议,但您的客户端可以将其处理为异步。例如。当您使用http调用任何服务时,您的http客户端可能会调度后台线程(异步)。然而,http呼叫将等待,直到它的超时或响应返回,在这段时间内,http呼叫链正在等待同步。

套接字

由于HTTP使用套接字并且套接字存在硬限制。每个HTTP连接(如果每次都创建新的)都会打开新的套接字。如果您一次有数百个请求,则可以映像同步调度多少个http调用,并且可以运行套接字。不确定其他操作系统,但在Windows上,即使你完成了请求套接字,它们也不会立即处理并停留几分钟。

网络连接

建议不要长时间保持http连接。如果您部分或完全丢失网络怎么办?您的http请求会超时,您根本不会知道状态。

记住所有这些事情,最好在后台进程上安排长时间运行的任务。


0
投票

如果您在服务器上运行长作业时让用户等待,那么您在等待时就会占用一个有价值的HTTP连接。

从RestFul的角度来看,最佳实践是回复HTTP 202(已接受)并返回带有poll的链接的响应。

如果要在等待时挂起客户端,则应在客户端设置请求超时。

如果您之间有一些防火墙,如果它们处于非活动状态一段时间,可能会丢弃连接。


0
投票

更高的响应吞吐量

通常,您希望OLTP(Web服务器)尽可能快速响应。由于您在后台排队任务,因此您的Web服务器可以处理更多请求,从而提高响应吞吐量和处理能力。

更多记忆友好

通过消息传递队列在后台作业上排队长时间运行任务,可防止滥用Web服务器内存。这很好,因为它会增加应用程序的内存不足阈值。

更有弹性的服务器崩溃

如果您在后台排队任务并出现问题,则该作业可以排队到死信队列,这有助于您最终解决问题并重新处理导致未处理异常的请求。

© www.soinside.com 2019 - 2024. All rights reserved.