【问题标题】:Concurrent but synchronous GRPC server call handling并发但同步的 GRPC 服务器调用处理
【发布时间】:2017-09-08 12:07:12
【问题描述】:

当多个客户端同时向 GRPC 服务器发出相同的调用时,服务器是否会异步应答这些调用?如果我希望服务器同步处理调用,我应该使用像AsyncSemaphore 这样的某种锁定吗?使用这种模式,我可以“保持”一个正在进行的呼叫多长时间(例如,两个客户端同时进行相同的呼叫,一个阻塞直到第一个客户端的呼叫被应答)直到 GRPC 取消它或客户端断开连接? GRPC 在这方面是否有严重的超时?

【问题讨论】:

  • 你实现了GRPC服务器吗?是别人的代码吗?它在什么语言/平台上运行?
  • 这是我的代码,语言是C#
  • 你尝试的时候发生了什么?它是否以异步方式回答它们?
  • 我想避免尝试和猜测的方法。我猜服务器同时处理呼叫。但是,这并不能回答我关于超时的问题。

标签: c# grpc


【解决方案1】:

gRPC 将异步应答调用。如果您希望服务器只为单个调用提供服务,则应在处理程序中使用锁。

【讨论】:

  • 详细说明一下:你应该同时接受调用(这里什么都不做,这是默认行为)并在你的处理程序中实现同步逻辑 - 它不一定是锁,但您可以使用类似的原语(例如,将请求添加到同步处理队列并等待请求完成)。只要您在客户端设置了足够长的截止日期,正在进行的通话就会一直有效。
猜你喜欢
  • 2019-01-16
  • 2023-03-14
  • 2013-11-09
  • 2018-01-11
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
  • 2019-12-23
  • 2021-03-25
相关资源
最近更新 更多