首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grpc-java多通道管理

Grpc-java多通道管理
EN

Stack Overflow用户
提问于 2021-07-02 18:27:32
回答 2查看 1K关注 0票数 0

我正在使用grpc (netty)进行客户机-服务器通信。目前,我正在使用NettyChannelBuilder创建一个单独的通道(我相信它是由一个http2连接支持的),并且我使用这个通道来创建我的所有http2存根。由于RPS相当高,我看到了grpc通道的饱和,并且请求开始排队。我想要创建更多的渠道(因此自然更多的连接)。有办法做到这一点吗?

此外,我是否假设一个grpc通道是由单个http2连接支持的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-05 02:28:06

我认为你应该让客户端通道的线程池更大一些。

通道可以有多个子信道,子信道具有一个或多个传输,传输表示连接。服务器地址通常只有一个连接。

代码语言:javascript
复制
 ManagedChannelBuilder.forAddress("127.0.0.1", 9091)
                      .executor(Executors.newCachedThreadPool())
                      .usePlaintext()
                      .build()
票数 1
EN

Stack Overflow用户

发布于 2021-07-08 05:18:36

gRPC信道由一个或多个子信道支持;每个子信道是一个连接.当您有多个服务器(后端)时,拥有更多的连接会有所帮助,因此每个连接都会转到不同的后端。如果您有一个服务器(后端),您应该确保创建到同一台服务器的多个连接实际上会有所帮助,如果服务器不是瓶颈,并且能够处理高的网络吞吐量,这将是一种情况。

在一个通道中创建多个子通道是使用一个RoundRobinLoadBalancer和一个名为EquivalentAddressGroup的东西进行的。要为同一台服务器创建多个子通道,您必须能够为同一服务器创建多个EquivalentAddressGroup。要做到这一点,需要一个自定义NameResolver (或DnsNameResolver)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68229848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档