【发布时间】:2012-04-01 16:59:11
【问题描述】:
Thrift 的主要目标是实现跨编程语言的高效可靠通信。但我认为 HTTP-RPC 也可以做到这一点,Web 开发人员几乎每个人都知道如何在 http 上工作,而且 HTTP-RPC(json) 比 Thrift 更容易实现,
也许 Thrift-RPC 更快,那么谁能告诉我它们之间的性能差异?
【问题讨论】:
Thrift 的主要目标是实现跨编程语言的高效可靠通信。但我认为 HTTP-RPC 也可以做到这一点,Web 开发人员几乎每个人都知道如何在 http 上工作,而且 HTTP-RPC(json) 比 Thrift 更容易实现,
也许 Thrift-RPC 更快,那么谁能告诉我它们之间的性能差异?
【问题讨论】:
速度以外的几个原因:
Thrift 完全生成客户端和服务器代码,包括您传递的数据结构,因此您无需处理任何事情,只需编写处理程序和调用客户端。包括参数和返回在内的所有内容都会自动验证和解析。这样您就可以免费获得对数据的完整性检查。
Thrift 比 HTTP 更紧凑,可以轻松扩展以支持加密、压缩、非阻塞 IO 等功能。
如果您愿意,可以很容易地将 Thrift 设置为使用 HTTP 和 JSON(例如,如果您的客户端位于 Internet 上的某个地方并且需要通过防火墙)
Thrift 支持持久连接并避免 HTTP 引起的连续 TCP 和 HTTP 握手。
就我个人而言,当我需要来自外部的连接时,我会在内部 LAN RPC 和 HTTP 上使用 thrift。
我希望这一切对你有意义。你可以在这里阅读我关于节俭的介绍:
http://www.slideshare.net/dvirsky/introduction-to-thrift
它有链接到其他一些节俭的替代品。
【讨论】:
这里是不同序列化程序性能比较的好资源:https://github.com/eishay/jvm-serializers/wiki/
特别谈到 Thrift 与 JSON:Thrift 的性能可与最好的 JSON 库(jackson、protostuff)相媲美,并且序列化大小略低。
IMO,最大的节俭优势是方便的可互操作的 RPC 调用和二进制数据的方便处理。
【讨论】: