Thrift格式规范在哪里?

时间:2011-02-15 21:35:13

标签: thrift specifications dataformat

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

鉴于其广泛的用途,我希望它只是我可怜的谷歌,并且存在规范或规范(源代码之外)。如果是,请分享!

编辑:Java源代码对于确定格式并不算太糟糕;参见TBinaryProtocol.java和TCompactBinaryProtocol.java;其中包含基元,由生成的类调用(扩展TBase)

EDIT2:虽然它不包含格式规范,但“the missing guide”是一个很好的阅读。

3 个答案:

答案 0 :(得分:10)

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

TCompactProtocol协议稍微更好地定义on the thrift wiki但不是简单的术语。

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

答案 1 :(得分:9)

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

您可以在此处找到它:https://erikvanoosten.github.io/thrift-missing-specification/

答案 2 :(得分:0)

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

通常,您会在野外找到紧凑协议:

  

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