【问题标题】:When to create a gRPC client when chaining multiple gRPC calls链接多个 gRPC 调用时何时创建 gRPC 客户端
【发布时间】:2019-10-05 01:54:22
【问题描述】:

我有一些 gRPC 服务器,并且想将一些调用链接起来,这样流程就会变成这样:

Client X calls Server A
  └──> Server A
           ... some processing ... < 1 >
           calls Server B
             └──> Server B
                      ... some processing ...
                      returns Result B
           receives Result B
           ... some more processing ...
           returns Result A

为此,我一直在每次调用服务器 A RPC 时为服务器 B 连接创建一个 gRPC 客户端(如上图所示 &lt; 1 &gt;)。我发现了一个类似的问题问here,我知道这种方法不适合利用here 讨论的并发性的长期连接。

我没有从上述两个参考中得到的是什么时候应该创建 gRPC 客户端。如果我要与服务器 B 调用服务器 C 等进一步链接,是否每个服务器都需要在进程开始时生成连接?这是否会引入每个服务器的启动依赖关系?

此外,作为基线,我认为使用上下文可以实现良好的链接,并且仍然可以控制这些远程调用。这是 gPRC 的正确用法吗?

【问题讨论】:

    标签: grpc grpc-go


    【解决方案1】:

    我们改进了 ClientConn 的 GoDoc。请参阅:https://github.com/grpc/grpc-go/pull/3096

    让我们知道您的想法。谢谢。

    【讨论】:

    • 非常感谢 Easwar 的澄清和改进!我对此进行了进一步的研究,并认为 ClientConn 实际上是虚拟的,并且可以指向不存在的端点。这对于尽早创建客户端并重用肯定是有意义的(例如,端点不需要在客户端生成时启动并运行),并且此处的文档提供了有关它的确切详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多