代码之家  ›  专栏  ›  技术社区  ›  Mark

如何强制我的gRPC客户端打开到服务器的多个连接?

  •  1
  • Mark  · 技术社区  · 7 年前

    Channel 我构建的实例。

    我正计划使用谷歌所说的“ proxy load balancing “通过HAProxy。因此,我需要从我的客户机(例如,服务A)到我的服务器(例如,服务B)的多个连接。如果创建的连接不超过一个,则HAProxy会为该连接选择一个服务,而其他服务器都不会看到任何负载。

    我试过使用 ChannelOptions.MaxConcurrentStreams 在客户端和服务器端(同时在客户端和服务器端),但没有任何运气。如前所述,我创建了多个 实例,但毫无用处。我发现的唯一有效的技术是创建多个流程,由于明显的原因,这并不理想。

    我该怎么做才能完全启用Google的“代理负载平衡”方案?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Eric G    7 年前

    目前,没有直接的方法强制使用我们现有的API创建新的连接。正如我在评论中提到的,我们的C-Core实现(由gRPC C#包装)只能通过提供不同的 ChannelArgs ,表示连接的参数,如果存在,则确保为每组不同的连接创建单独的连接 信道参数 . 但是,仅使用不同的通道参数来获取同一连接的新副本并不是API的预期用途,因此没有真正意义上的通道参数除了确保建立新连接外不会改变任何内容。

    然而,有一个问题 in-progress PR 这就是添加一个通道参数,该参数显式强制子通道(连接)共享仅在单个通道实例中发生。设置后,这将避免在通道实例之间共享连接,并允许您确保每个通道创建一个新连接。