为什么节约,为什么不使用HTTP RPC(JSON+;gzip)

为什么节约,为什么不使用HTTP RPC(JSON+;gzip),json,thrift,Json,Thrift,Thrift的主要目标是实现跨编程语言的高效可靠通信。但我认为HTTP-RPC也可以做到这一点,web开发人员几乎每个人都知道如何使用HTTP,实现HTTP-RPC(json)比节约更容易 也许节俭RPC更快,那么谁能告诉我它们之间的性能差异呢?除了速度之外,还有几个原因: Thrift完全生成客户机和服务器代码,包括您正在传递的数据结构,因此除了编写处理程序和调用客户机之外,您不必处理任何事情。所有内容,包括参数和返回都会自动验证和解析。因此,您可以免费获得数据的健全性检查 Thrift比HT

Thrift的主要目标是实现跨编程语言的高效可靠通信。但我认为HTTP-RPC也可以做到这一点,web开发人员几乎每个人都知道如何使用HTTP,实现HTTP-RPC(json)比节约更容易


也许节俭RPC更快,那么谁能告诉我它们之间的性能差异呢?

除了速度之外,还有几个原因:

  • Thrift完全生成客户机和服务器代码,包括您正在传递的数据结构,因此除了编写处理程序和调用客户机之外,您不必处理任何事情。所有内容,包括参数和返回都会自动验证和解析。因此,您可以免费获得数据的健全性检查

  • Thrift比HTTP更紧凑,并且可以轻松扩展以支持加密、压缩、非阻塞IO等

  • 如果您愿意,可以将Thrift设置为非常容易地使用HTTP和JSON(例如,如果您的客户端在internet上的某个位置,需要通过防火墙)

  • Thrift支持持久连接,并避免HTTP引起的连续TCP和HTTP握手

  • 就我个人而言,当我需要外部连接时,我使用thrift进行内部LAN RPC和HTTP

    我希望这一切对你有意义。你可以在这里阅读我关于节俭的介绍:


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

    这里有一些关于不同序列化程序性能比较的好资源:

    具体说到Thrift vs JSON:Thrift的性能可以与最好的JSON库(jackson,protostuff)相媲美,并且序列化的大小要低一些


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

    Great answer Dvir!我也很喜欢节俭,在大多数情况下我更喜欢节俭。最大的困难是安装Thrift编译器,但一旦安装完成并与适当的maven插件结合,您就可以开始了。所需的紧凑的服务器/客户机代码非常性感@JacoVanNiekerk谢谢,我已经编译了很多次节俭了,对我来说,它似乎微不足道:)。在我看来,最大的缺点是python服务器不能很好地与thrift配合使用,这有GIL的限制(实际上thrift中的一个python服务器是我做的一个贡献,它试图解决这个问题)。但是对于C++或java来说,它是很棒的。大多数HTTP客户端也支持保持异类:4号可以通过使用所有HTTP客户端支持的保持生存来轻松地减轻。还可以发布二进制文件(尽管它不是RESTful),这将有助于紧凑的线上传输。