【问题标题】:file transfer using gRPC使用 gRPC 进行文件传输
【发布时间】:2018-02-16 17:10:09
【问题描述】:

使用 gRPC 和协议缓冲区将文件或图像从一个进程传输到另一个进程的标准方法是什么?文件大小从 1MB 到 6MB。

基本上我想知道如何为 python、C++ 和 golang 实现发送方/接收方代码对

http://github.com/johanbrandhorst/chunker

这是迄今为止我能找到的最接近 golang 的。我在想它是否可以扩展到 python 和 c++。首选具有较少依赖性的更通用的方法。

我正在创建多服务以通过 IPC 消息传递交换图像 btw 机器/进程。另一种选择是使用共享内存。我不确定Redis是否可以存储图片

【问题讨论】:

    标签: redis protocol-buffers grpc grpc-java capnproto


    【解决方案1】:

    据我所知,使用协议缓冲区发送大于 1MB 的文件可能不是最好的方法。通过套接字通过字节字符串逐块发送文件是一种更好的方法。

    How to send files in "chunks" by socket?

    【讨论】:

      【解决方案2】:

      对于小型文件(例如,小于 1 MiB),将整个文件放在一条消息中(如 bytes)非常简单。对于较大的文件,将文件分块并使用流是很自然的;见my answer for a similar question

      【讨论】:

        【解决方案3】:

        我以前没有这样做过,但我认为这归结为协议缓冲区语言支持的类型。

        我的理解是您可以使用bytes 类型,因为它可能包含任意字节序列。在存储之前对内容进行编码、分配并“运送”!

        查看here 的标量类型。

        另一种方法是将文件存储在所涉及的“服务”可以读取的位置——如果其中一些服务需要,也可以写入。然后向“感兴趣的”服务发送一条 gRPC 消息,其中包含访问(或执行任何其他操作)相关文件所需的信息。

        【讨论】:

          猜你喜欢
          • 2021-04-21
          • 2019-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-24
          • 2014-11-10
          相关资源
          最近更新 更多