如何允许 Java 中的 gRPC Channel 使用多个连接?
Posted
技术标签:
【中文标题】如何允许 Java 中的 gRPC Channel 使用多个连接?【英文标题】:How to allow gRPC Channel in Java to use multiple connections? 【发布时间】:2021-10-02 03:12:21 【问题描述】: io.grpc.Channel 类的Javadoc 提到,
一个通道可以有零个或多个实际连接到 基于配置、负载等的端点
我的问题是,如何启用这个配置,让 gRPC 的通道在需要时打开多个实际连接?
更新: 根据this Microsoft Doc,只建立了一个TCP连接!
【问题讨论】:
【参考方案1】:这是默认行为,无需配置。有关 gRPC 最佳实践的一些提示,请参阅 https://grpc.io/docs/guides/performance/,其中简要介绍了通道和 HTTP/2 连接限制。
【讨论】:
这份文件本身对我来说似乎有点混乱!它提到了这两件事 - 每个 gRPC 通道使用 0 个或多个 HTTP/2 连接 - 使用 gRPC 通道池在多个连接上分配 RPC 所以回到同一个问题,谁管理这些多个连接!如果我们,那么我是否必须使用某种 RoundRobin 方式将 RPC 发送到通道,或者如果是 gRPC,那么如何?【参考方案2】:我认为 grpc-java 或 grpc-go 客户端中没有现成的功能(或配置)。但是,您可以探索 grpc-dotnet 客户端,我认为他们找到了workaround(即使他们不推荐使用)。
谁管理这些多个连接
在 grpc-java 中,通道本身管理 HTTP/2 连接。我们无权访问这些连接(如果我们想配置它们)。
可能有一种可能的解决方法来实现相同的 - “创建多个渠道”。见this
【讨论】:
以上是关于如何允许 Java 中的 gRPC Channel 使用多个连接?的主要内容,如果未能解决你的问题,请参考以下文章
Python 客户端在 GRPC 存根上返回 CERTIFICATE_VERIFY_FAILED