【发布时间】:2019-04-08 07:22:11
【问题描述】:
假设我在服务器上有 2 个函数加法和减法。我可以在这种情况下使用双向流来增加吞吐量吗?如果是这样,我是否必须为每个请求和响应提供一个标识符以区分客户端的响应(如 reqId)?通常,它们将是一元调用,但希望通过流式传输来增加吞吐量。
【问题讨论】:
-
您是否对一元 RPC 的吞吐量进行了基准测试? AFAIK,gRPC 将重用 RPC 服务的开放通道,因此吞吐量增加可能不会那么显着。而且它还剥夺了您通过运行服务器副本来大幅提高吞吐量的能力。
-
@Michał - 您能否详细说明“通过运行服务器副本大幅提高吞吐量的能力”?当与主机的连接打开时,运行多个服务器如何帮助提高吞吐量?谢谢。
-
当您执行流式 RPC 时,它必须在单个服务器计算机上执行。您可以部署多台服务器机器并将它们放在反向代理后面 - 在这种情况下,每个请求都可以由不同的机器处理。如果客户端要发送多个一元请求,允许您同时处理多个请求。如果客户端要发送流式请求,则需要在单台机器上执行该请求。
-
@Michał - 我的理解是,对于 gRPC(它在内部使用 Http/2),当连接打开时,它总是在两台机器之间,并且对于后续请求保持打开状态。这是 http/1 和 http/2 之间的主要区别。那么,您所说的关于由不同机器处理的多个一元请求是否正确,因为它涉及与不同机器打开如此多的连接?我错过了什么吗?