gpt4 book ai didi

protocol-buffers - google protobuf 最大大小

转载 作者:行者123 更新时间:2023-12-03 11:47:32 72 4
gpt4 key购买 nike

我的 protobuf 消息中有一些重复的元素。在运行时,消息的长度可以是任何长度 - 我看到一些已经问过的问题 - [1]:Maximum serialized Protobuf message size

  • 我在这里有一个稍微不同的问题。如果我的 JMS(Java 消息传递服务)提供程序(在本例中是我的 weblogic 或 tibco jms 服务器)没有任何大小
    限制最大消息大小,将 Protocol Buffer 编译器
    提示最大消息大小?
  • 是否
    编码/解码的性能在大尺寸下严重受损
    (大约~10MB)..?
  • 最佳答案

    10MB 正在插入它,但你可能会没事的。

    Protobuf 有 2GB 的硬限制,因为许多实现使用 32 位有符号算法。出于安全原因,许多实现(尤其是 Google 提供的实现)默认设置了 64MB 的大小限制,尽管您可以根据需要手动增加此限制。

    实现本身不会因大消息而“减慢”速度,但问题是在开始使用任何内容之前,您必须始终一次解析整个消息。这意味着整个消息必须适合 RAM(请记住,在解析内存中消息对象后,它比原始序列化消息要大得多),即使您只关心一个字段,也必须等待整个消息解析。

    一般来说,我建议根据经验将自己限制在 1MB 以内。除此之外,考虑将消息分成可以独立解析的多个块。然而,每个应用程序——对某些人来说,10MB 没什么大不了的,对其他人来说,1MB 已经太大了。您必须分析自己的应用程序才能找到答案。

    我实际上已经看到人们很高兴发送大于 1GB 的消息的情况,所以......它“有效”。

    附带说明,Cap'n Proto具有与 Protobuf 非常相似的设计,但最多可以支持 2^64 字节的消息(每个 4GB 的 2^32 段),它实际上允许您从消息中读取一个字段,而无需解析整个消息(如果它在一个磁盘上的文件,使用 mmap() 避免读取整个内容)。

    (披露:我是 Cap'n Proto 以及大部分 Google 开源 Protobuf 代码的作者。)

    关于protocol-buffers - google protobuf 最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34128872/

    72 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com