Thrift 格式规范在哪里?

问题描述 投票:0回答:3

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

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

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

编辑2:虽然它不包含格式规范,但“缺少的指南”很好读。

thrift specifications dataformat
3个回答
14
投票

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

该规范现已在 Thrift 存储库中提供:https://github.com/apache/thrift/tree/master/doc/specs

旧答案:

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


12
投票

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

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

在提供更好的文档之前,您还可以检查 Python 库代码以及 Python

struct

 模块文档作为另一种选择。


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

© www.soinside.com 2019 - 2024. All rights reserved.