首页 > 解决方案 > gRPC 如何处理多个重叠请求?

问题描述

假设一个 gRPC 客户端一个接一个地向 gRPC 服务器发出两个请求 R1 和 R2(假设没有任何明显的时间间隔,即 R2 是在 R1 仍然没有服务时发出的)。此外,假设 R1 比 R2 花费更多的时间。在这种情况下,我应该先期待 R2 的响应,因为它需要更少的时间,还是应该先期待 R1 的响应,因为这个请求是在 R2 之前提出的?会发生什么,为什么?据我观察,我认为请求是以 FCFS 方式提供的,因此,R1 的响应将首先被客户端接收,然后是 R2,但我不确定。

标签: webprotocol-buffersgrpcrpcgrpc-python

解决方案


从理论上讲,没有什么能阻止服务器和客户端并行处理 gRPC 请求。GRPC 连接是通过 HTTP/2 建立的,可以同时处理多个请求。所以是的 - 如果服务器不使用某些特定的同步或限制机制,那么请求将是重叠的进程。如果服务器资源或策略不允许,则应一一处理。我还可以添加请求可以有一个超时,之后它将被取消。如此长的等待可能导致取消和不处理。


推荐阅读