web - gRPC 如何处理多个重叠请求?
问题描述
假设一个 gRPC 客户端一个接一个地向 gRPC 服务器发出两个请求 R1 和 R2(假设没有任何明显的时间间隔,即 R2 是在 R1 仍然没有服务时发出的)。此外,假设 R1 比 R2 花费更多的时间。在这种情况下,我应该先期待 R2 的响应,因为它需要更少的时间,还是应该先期待 R1 的响应,因为这个请求是在 R2 之前提出的?会发生什么,为什么?据我观察,我认为请求是以 FCFS 方式提供的,因此,R1 的响应将首先被客户端接收,然后是 R2,但我不确定。
解决方案
从理论上讲,没有什么能阻止服务器和客户端并行处理 gRPC 请求。GRPC 连接是通过 HTTP/2 建立的,可以同时处理多个请求。所以是的 - 如果服务器不使用某些特定的同步或限制机制,那么请求将是重叠的进程。如果服务器资源或策略不允许,则应一一处理。我还可以添加请求可以有一个超时,之后它将被取消。如此长的等待可能导致取消和不处理。
推荐阅读
- linux - Trisquel 9 - 内核升级和暂停笔记本电脑后不再通过以太网访问有线互联网
- react-native - React.createContext 未更新
- django-filter - 从 django 表中导出过滤后的数据
- reactjs - 如何将 node_modules 中的组件导入主 index.js 文件?(反应和 AEM)
- javascript - 使用 Javscript 按钮同步 classList.toggle 和 innerHTML 更改
- arrays - 我如何访问 char** 字符串中的下一个元素
- nix - 如何编写一个启动并可以在 nix-shell 环境中运行命令的 Haskell 程序?
- azure-web-app-service - Azure 应用服务 (Linux) CI/CD 构建不会删除从存储库中删除的文件
- php - 循环请求中的偏移量和限制
- matlab - Matlab中多个变量的顺序求解方程