20

尽管 Thrift 格式使用相对广泛(并且项目仍然存在),但我无法找到底层数据格式的规范。或格式,因为显然至少有两种格式;标准之一,紧凑的格式。

鉴于它的广泛使用,我希望它只是我可怜的 google-fu,并且存在一个或多个规范(在源代码之外)。如果有,请分享!

编辑:Java 源代码对于确定格式来说还不错;参见 TBinaryProtocol.java 和 TCompactBinaryProtocol.java;其中包含原语,由生成的类调用(扩展 TBase)

EDIT2:虽然它不包含格式规范,但“缺少的指南”是很好的阅读材料。

4

3 回答 3

13

我遇到了同样的问题,因此决定编写 Thrift 二进制和紧凑协议的规范。

你可以在这里找到它:https ://erikvanoosten.github.io/thrift-missing-specification/

于 2016-10-04T14:53:12.277 回答
12

Thrift 消息的格式取决于选择的序列化协议。您可以使用多种协议之一序列化 Thrift 对象,包括 TBinaryProtocol、TCompactProtocol、TJSONProtocol 和其他模糊选项。该协议在原始Thrift 白皮书 PDF中根据 API 进行了抽象描述,但目前在 Thrift apache 项目中的任何地方都没有定义。

TCompactProtocol 协议在 thrift wiki 上的定义稍微好一些,但不是简单的术语。

在提供更好的文档之前,您还可以将 Python 库代码与 Pythonstruct模块文档一起作为另一种选择。

于 2011-04-17T15:48:29.700 回答
2

有两种二进制编码,紧凑和非紧凑。

通常你会在野外找到紧凑的协议:

https://github.com/apache/thrift/blob/master/doc/specs/thrift-compact-protocol.md

虽然非紧凑协议可能是遗留协议:

https://github.com/apache/thrift/blob/master/doc/specs/thrift-binary-protocol.md

这是对规范的粗略概述:

https://github.com/apache/thrift/blob/master/doc/specs/thrift-protocol-spec.md

于 2019-07-27T10:54:42.457 回答