是否可以仅对 2 对客户端/服务器使用一个 gRPC 通道

问题描述

我有一个用例迫使我使用 2 对客户端/服务器,例如: 我有 2 个进程,每个进程都在扮演客户端/服务器角色,因此我必须创建 2 对客户端/服务器。 我的问题是尽量减少创建 2 Channel 来实现这种通信的开销,我们是否有可能只使用一个 Channel?

注意:双流无济于事,因为在我的情况下,两个进程扮演服务器/客户端角色。

感谢您的进一步帮助。

解决方法

创建服务器/客户端的开销实际上非常小(太小,无法在大多数应用程序中发挥任何重要作用。

当我们说“创建一个新的 gRPC 通道有一些开销并且是昂贵的操作”时,它的意思是“与在已建立的通道上发送 RPC 相比成本更高”。你不应该经常创建新的通道/服务器(例如为每个 RPC 创建一个新通道),但是在应用程序启动时创建一个新的通道和服务器是非常合理的事情,除非你正在做一些高度专业化的事情,这是不值得考虑创建一些额外频道的开销。

我不知道您的用例的详细信息,但我的一般反应是“不要在不必要的地方尝试过度优化”(您是否实际测量过影响 - 您可能会发现它完全可以忽略不计)我会简单地创建您需要的服务器/频道。