用于流式传输protoBuf消息的设计模式

时间:2013-11-19 08:47:29

标签: java design-patterns protocol-buffers

我想将protobuf消息流式传输到文件中。

我有一个protobuf消息

message car {
     ... // some fields
}

我的java代码会创建此汽车消息的多个对象。

我应该如何将这些消息流式传输到文件中。

据我所知,有两种方法可以实现。

  1. 还有其他消息,如汽车

    message cars {
      repeated car c = 1;
    }
    

    并使java代码创建一个汽车类型对象,然后将其传输到文件。

  2. 只需使用 writeDelimitedTo 功能将汽车信息恰好串联到一个文件上。

  3. 我想知道使用protobuf进行流媒体传输的更有效方法。

    我应该何时使用模式1,何时应该使用模式2?

    这是我从https://developers.google.com/protocol-buffers/docs/techniques#large-data

    得到的

    我不清楚他们想说什么。

      

    大数据集

         

    协议缓冲区不是为处理大型邮件而设计的。作为一个   一般的经验法则,如果你处理的信息大于a   每个兆字节,可能是考虑替代策略的时候了。

         

    也就是说,协议缓冲区非常适合处理单个消息   在大型数据集中。通常,大数据集实际上只是一个   小块的集合,每个小块可以是结构化的   一块数据。尽管Protocol Buffers无法处理整个问题   立即设置,使用Protocol Buffers对每个部分进行大量编码   简化您的问题:现在您只需要处理一组字节   字符串而不是一组结构。

         

    协议缓冲区不包含对大数据的任何内置支持   因为不同的情况需要不同的解决方案。   有时一个简单的记录列表可以做,而有时你也可以做   想要更像数据库的东西。应该开发每种解决方案   作为一个单独的图书馆,只有那些需要它的人才需要支付   成本。

1 个答案:

答案 0 :(得分:0)

看看Previous Question。尺寸和时间的任何差异都是最小的 (选项1更快??,选项2更小)。

我的建议是:

  1. 大文件的选项2。您按消息处理消息。
  2. 选项1,如果需要多种语言。在过去,所有语言都不支持分隔,但这似乎正在发生变化。
  3. 其他明智的人选。