2012-03-16 62 views
47

Thrift的主要目标是跨编程语言实现高效可靠的通信。但我认为HTTP-RPC也可以做到这一点,web开发人员几乎每个人都知道如何在http上工作,并且比实现HTTP更容易实现HTTP-RPC(json),为什么选择Thrift,为什么不使用HTTP RPC(JSON + gzip)

也许Thrift-RPC更快,那么谁可以告诉我他们之间的差异?

回答

88

比速度等几个原因:

  1. 节俭完全生成客户端和服务器端的代码,其中包括要传递的数据结构,所以你不必应付比写的处理程序以外的任何并调用客户端。包括参数和返回在内的所有内容都会自动验证并解析。所以你可以免费对你的数据进行完整性检查。

  2. 节俭比HTTP更紧凑,并能很容易地扩展,以支持诸如加密,压缩,非阻塞IO等

  3. 节俭可以设置为使用HTTP和JSON很容易地,如果你希望它(如果你的客户是说的地方在互联网上,需要通过防火墙)

  4. 节俭支持持久连接,并且能够避免HTTP即被连续TCP和HTTP握手。

就我个人而言,当我需要外部连接时,我使用内部LAN RPC和HTTP的节俭。

我希望这一切对你有意义。您可以阅读介绍我给约节俭这里:

http://www.slideshare.net/dvirsky/introduction-to-thrift

它链接到一些其他的替代品节俭。

+0

很好回答Dvir!如果节俭并且在大多数情况下更喜欢它,我也非常喜欢。最大的困难是安装Thrift编译器,但一旦完成并与适当的Maven插件结合使用,您就可以开始了。所需的紧凑型服务器/客户端代码非常性感! – 2012-03-16 13:32:01

+0

@JacoVanNiekerk谢谢,我编了很多次节俭似乎对我来说微不足道:)。在我看来,最大的缺点是python服务器不能很好地与节俭一起玩,因为GIL的限制(实际上python服务器中的一个是节俭的,我试图解决这个问题)。但对于C++或Java而言,它非常棒。 – 2012-03-16 13:39:04

+1

大多数HTTP客户端也支持keep-alive :) – Xorlev 2013-04-19 22:37:59

5

这里是不同的串行的性能比较好的资源:https://github.com/eishay/jvm-serializers/wiki/

VS JSON说到具体节俭:节俭性能与最佳的JSON库(杰克逊,protostuff)和系列化规模有所回落。

IMO,最强大的节约优势是方便的可互操作的RPC调用和方便的二进制数据处理。