链接多个 gRPC 调用时何时创建 gRPC 客户端
When to create a gRPC client when chaining multiple gRPC calls
我有几个 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 客户端(如上文 < 1 >
所示)。我发现了一个类似的问题here, and I understand this approach doesn't fit with the long lived connection to make use of concurrency nature discussed here。
我没有从以上两个参考中得到什么是我应该在什么时候创建 gRPC 客户端。如果我将其与服务器 B 调用服务器 C 等进一步链接,是否每个服务器都需要在进程启动时生成连接?这是否会引入每个服务器的启动依赖性?
此外,作为基准,我认为使用上下文可以实现很好的链接,并且仍然可以控制那些远程调用。这是 gPRC 的正确用法吗?
我们改进了 ClientConn 的 GoDoc。参见:https://github.com/grpc/grpc-go/pull/3096。
让我们知道您的想法。谢谢
我有几个 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 客户端(如上文 < 1 >
所示)。我发现了一个类似的问题here, and I understand this approach doesn't fit with the long lived connection to make use of concurrency nature discussed here。
我没有从以上两个参考中得到什么是我应该在什么时候创建 gRPC 客户端。如果我将其与服务器 B 调用服务器 C 等进一步链接,是否每个服务器都需要在进程启动时生成连接?这是否会引入每个服务器的启动依赖性?
此外,作为基准,我认为使用上下文可以实现很好的链接,并且仍然可以控制那些远程调用。这是 gPRC 的正确用法吗?
我们改进了 ClientConn 的 GoDoc。参见:https://github.com/grpc/grpc-go/pull/3096。
让我们知道您的想法。谢谢