Facebook的Apache Thrift在Java环境中使用什么序列化框架? Java内置序列化还是Kryo,还是其他什么?
我看到Thrift有一个名为TSerializer
的类似乎实现了TBase
,它实现了java.io.serialializable
。我可能没有得到正确的订单。
答案 0 :(得分:1)
Thrift使用自己的机制,在Thrift中说这些被称为Transport。所有语言都是如此,以确保互操作性。其中一个传输是TFileTransport
,另一个是受欢迎的传输TSocket
。
如果你看一下这些代码,你会发现,由于几个原因,通常会非常稀疏地使用四方库。还没有使用可用的内置机制,因为它们通常是特定于语言的东西,因此不能跨语言移植。
Thrift的最重要特征之一就是它的开放性。任何人都可以轻松编写自己的传输或协议实现并将其插入系统。其中一些可以在/contrib
文件夹中找到。
假设目标环境是Java。它将实现什么序列化方法 - Java的本机序列化?我看到Thrift有一个名为TSerializer [...]
的类
您只需实例化TSerializer
并使用它。如果您对协议有特殊要求,请使用替代CTOR,例如传递TJSONProtocolFactory
的实例或您需要的任何其他内容。默认情况下,序列化程序采用TBinaryProtocol
。
然后你只需致电
TSerializer serializer = new TSerializer();
TBytes data = serializer.serialize( myThriftObject);
并使用data
执行任何操作。