当前位置: 首页 > 知识库问答 >
问题:

grpc客户端和服务器的共享内存

艾令雪
2023-03-14

我的项目是在服务器上读取一个图像,进行一些处理,然后将整个图像传递给客户端。客户端接收图像并进行更多处理,然后将一些输出值返回给服务器。服务器和客户端之间使用的映像大小为[640x480x3]。

以下是我想到的实现这个问题的各种技术:

  • 通过消息将整个像素值从服务器传递到客户端
  • 在SO中有各种各样的答案。我目前正在努力让它工作。
  • 服务器和客户端之间的这种消息传递模式是否可能?如果是,请提供一些文档参考或示例。

共有2个答案

南宫云
2023-03-14

我会说你不应该使用gRPC。在我看来,你的问题更像是分布式图像处理。我建议使用FPGA来处理这类事情。另一种带有CPU的解决方案可能是R/DMA。使用DMA,您只需绕过CPU并直接使用其内存。两个CPU都可以通过gRPC相互通信。假设您有2台服务器。服务器A有图像,服务器B想要它。服务器B通过gRPC询问指针地址,服务器A给他地址,服务器B通过DMA获取。如果您使用RDMA,请确保您有一个高速低延迟的网络解决方案。10 Gbit/s或更高,延迟为纳秒。这两种解决方案都适用于较大的图像。如果您只想发送较小的图像,请使用一些文件传输协议。

邵伟
2023-03-14

gRPC(目前)不支持任何语言API中同一系统上不同进程之间的任何类型的共享内存传输。一个接近的变体是C和Java支持的进程内传输。这用于在同一进程中的客户端和服务器之间发送消息(例如,如果您想在与服务器相同的地址空间中运行代理,该服务器也可能具有直接的外部接口),这种操作与传统gRPC操作的唯一区别在于两种语言的通道创建以及在Java构建服务器时。Java留档在https://grpc.io/grpc-java/javadoc/io/grpc/inprocess/InProcessServerBuilder.html。对于C,您只需调用服务器上的服务器::InProcessChannel,而不是grpc::CreateChannel,因为只要您有指针,所有服务器都会自动在C中具有进程内功能。

希望有帮助!

@vjpai

 类似资料:
  • 我必须为C语言课程编写一个小游戏,它必须使用共享内存、信号量和一个可以处理多个客户机的客户机/服务器体系结构(游戏的确切要求是2)。 这两个客户机需要轮流执行,它们由完全相同的程序表示(这里没有涉及fork()--都以./client开头) 服务器必须在启动时创建所有资源。所以我的主要问题是关于信号量。(共享内存和游戏逻辑可以工作,或者并不难实现。) 为了决定服务器或客户机是否可以访问共享内存,我

  • 我对gRpc很陌生,已经开始探索它们的基础知识(在C语言中)。我想获得有关如何发送心跳以检查客户端/服务器是否仍处于连接状态以及在断开连接时采取恢复措施的指导。任何示例或参考任何文档/文章都将有助于我开始学习。谢谢

  • 快速免责声明,我是非常新的gRPC和RPC一般,所以请有耐心 对等点列表、是在以前的rpc调用中构建的。 客户 服务器端实现,

  • 我不太了解共享内存是如何工作的,我试图编写一个服务器-客户机程序,在该程序中,服务器和客户机使用共享内存和信号量相互通信。

  • 问题内容: 我已按照本指南进行操作,以便使用SSL层设置我的Tomcat 8实例,生成客户端和服务器密钥库以及自动签名的公共客户端证书。 我想问题是我真的不知道如何配置Tomcat的连接器… 这是我当前的server.xml文件(已删除不必要的注释): 使用此方法,我尝试访问tomcat欢迎页面: 本地主机:8443 https://本地主机 https:// localhost:8443 但是他

  • 有可能从客户端向服务器抛出异常吗?我们有一个从服务器到客户端的开放流: 当我尝试这样的事情时: 我在客户端的StreamObserver.on错误中获得了异常,但在服务器端没有异常。