2016-02-12 59 views

回答

1

Protobufs将字符串和字节编码为前缀为整数长度的无限数量的字节。长度被编码为可以保存任何值的varint。即varint没有像C int或Java long那样的固定大小。因此,从理论上讲,您可以将尽可能多的数据填充到字符串或字节字段中,因为您可以支持内存。

但是,protobufs通常由Java,Go,Python等本机实现进行处理。这些语言具有最大长度。例如,在Java中,其中字符串以数组形式实现,数组以字节为索引,字符串的最大大小和数组的最大长度约为21亿个字符(准确地说,2^31 -1)。因此,protobuf中的任何更长的字符串将不能互操作,并且可能需要特殊的代码来读取和写入。

这就是理论。现在在实践中,如果您的数据量超过千兆字节,请不要试图用protorpc(或任何RPC格式)传递它。您需要一个旨在处理大数据的服务和API,例如Blobstore。您的protorpc代码可以使用您的斑点的URL。

相关问题