使用gRPC和协议缓冲区将文件或图像从一个进程传输到另一个进程的标准方法是什么?文件从1MB到6MB。
基本上我想知道如何实现发送方/接收方代码对适用于python,C ++和golang。
http://github.com/johanbrandhorst/chunker
这是到目前为止我对golang所能找到的最接近的。我在想它是否可以扩展到python和c ++。首选的是具有较少依赖性的更通用的方法。
我正在创建多服务以通过IPC消息传递在机器/进程之间交换图像。另一种选择是使用共享内存。我不确定Redis是否可以存储图像
我以前没有做过,但是我认为这归结为协议缓冲语言支持的类型。
我的理解是,您可以使用bytes
类型,因为它可以包含任意字节序列。在存储内容之前对其进行编码,分配并“运送”!
请看here的标量类型。
另一种方法是将文件存储在所涉及的“服务”可以读取的位置,并根据需要对其中的一些文件进行写入。然后将gRPC消息发送给“感兴趣的”服务,其中包含访问(或对文件进行其他任何处理)所需的信息。
对于小规模文件(例如,小于1 MiB),将整个文件放在一条消息中(例如bytes
)非常简单。对于较大的文件,将文件分成多个部分并使用流是很自然的。参见my answer for a similar question。
据我所知,使用协议缓冲区发送大于1MB的文件可能不是最佳方法。通过套接字通过字节字符串逐块发送文件是一种更好的方法。