如果客户端和服务器在 gRPC 中的同一进程上下文中运行,如何绕过 IPC 机制?

问题描述 投票:0回答:1

在我正在从事的一个项目中(在基于Linux的系统上),我有服务器,它可以有多个客户端。所有这些都发生在一台机器上,因此我使用Unix域套接字作为grpc IPC机制。 现在,客户端之一与服务器在同一进程上下文中运行。在这种情况下,我希望能够绕过 IPC 机制,因为它只会增加开销,并且这里不需要。我正在用 C++ 开发这个。我看到他们的文档中提到了

inProcessChannel
here,但我如何实际创建一个并将其用于我的用例?看起来它只存在于
grpc::Server
命名空间中。

我计划让客户端和服务器最初通过商定的 USD gRPC 通道进行标准通信,以便客户端可以查询服务器的 PID 并检查它自己的 PID,如果匹配,我希望能够使用

inProcessChannel 
进行通信(我的理解是它将绕过任何 IPC 开销。

我对如何从客户端创建

inProcessChannel
感到震惊。我找不到任何方法可以通过
grpc::CreateChannel
。这是否意味着我必须在服务器中创建它,并将通道传回客户端并使用它创建一个存根并进行通信?

有人可以给我一些指点吗?

c++ grpc
1个回答
0
投票

类 Test1Client { 民众: // 创建存根 Test1Client(const std::shared_ptrgrpc::ChannelInterface& 通道){} };

grpc::ChannelArguments 参数; auto t = new Test1Client(服务器->InProcessChannel(args));

© www.soinside.com 2019 - 2024. All rights reserved.