http - 高响应时间与排队

标签 http web microservices

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

保持事件状态超过一分钟的 HTTP 连接有什么缺点吗?默认情况下是否保持 TCP 在这里很重要?

最佳答案

这可能很重要,具体取决于您的应用程序。有几件事值得一提!

HTTP协议(protocol)同步

人们普遍错误地认为 HTTP 是异步的。 Http 是同步协议(protocol),但您的客户端可以异步处理它。例如。当您使用 http 调用任何服务时,您的 http 客户端可能会安排在后台线程(异步)上。但是,http 调用将一直等待,直到超时或响应返回,在此期间,http 调用链一直在同步等待。

套接字

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

网络连接

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

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

关于http - 高响应时间与排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55646479/

相关文章:

docker - 如何在本地环境中协调多个微服务?

java - 通过 HTTP 将 XML 对象发送到 POST REST 服务

angular - 如何在 Angular5 上从 express 渲染 html 模板

web - IOS 11 Safari 记住相机权限

javascript - 如何连续创建多个史莱克图像?

python - K8s 中微服务利用率低的性能问题(也对开发和 DevOps 产生影响)

microservices - 如何在 Git proto 存储库中发布对共享 .proto 文件的更改?

node.js http.get 在对远程站点发出 5 次请求后挂起

http - 无法使用 sim808 模块从服务器获取数据

来自 Google plus 的 URL 共享