【问题标题】:GRPC with one server and several clients具有一台服务器和多个客户端的 GRPC
【发布时间】:2022-10-05 06:00:15
【问题描述】:

Q1: 当我与一台服务器(S)和多个客户端(C1C2)(使用响应流 RPC)建立 GRPC 连接时。 我想知道帧S 是如何发送到C1C2 的? 例如,服务器需要响应 10 个帧。 C1C2 会分别收到什么,为什么?

  1. C1 获得 5 帧,C2 获得另外 5 帧(我尝试了我的程序,似乎它的行为方式是这样的)
  2. C1 获取所有 10 帧 C2 获取相同的所有 10 个副本。

    有没有办法从1或2中选择?

    问题二: 这次只有一个服务器(S)和一个客户端(C)的 GRPC 连接(仍然使用响应流 RPC)。 我强行停止C(即ctrl+c)并重新启动程序(C_second)。但这一次C_second仍然只得到S发送的部分帧。 似乎SC(强制停止)之间的连接仍然存在?

【问题讨论】:

    标签: python c++ grpc


    【解决方案1】:
    1. gRPC 是点对点的。连接C1 -> SC2 -> S 是分开的。 S 发送的任何消息都将定向到C1C2。如果客户端之间需要复制,则服务器应用程序逻辑将需要自行管理。

    2. 好问题。这是人们在设计协议时经常忽略的一点。 gRPC 本身是无国籍.如果通道终止,客户端将不会尝试下载之前发送的消息。相反,需要使 RPC 具有幂等性或者有状态的。也就是说,如果检查点需要在流式 API 中发生,应用程序需要自己管理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多