Thrift – 开源多语言RPC框架

RPC (wiki) 在大规模的互联网应用后端技术中非常常见,我们熟悉的搜索引擎、门户、网游服务器等,后端实现中都有涉及。主要原理是基于内网 socket 解决多机多模块之间的数据通讯问题。或者可以简单理解为,将单机的进程间通讯 (IPC) (wiki),扩展到多机通讯,解决可扩展性问题。

Thrift 是由 Facebook 开源的一个 RPC 框架,现在已经挂在 apache.org 下了。主要的几个好处:

  1. 支持非常多语言,包括在 WEB 开发中很常用的 PHP,以及最重要的 C++/Python/Java 等 WEB后端常用语言,当然,还包括很 cool 的 Ruby、Erlang。
  2. 完整的 RPC 框架实现,用脚本生成通讯相关的框架代码,开发者只需要集中精力处理好业务逻辑。比如搭建一个 Hello World Service 只需要几分钟。
  3. 拥有被 Facebook、Last.fm 等不少大规模互联网应用验证过的性能和可用性。

在 PRC 通讯方面,其实已经成熟多年。比如百度内部是自己定制的二进制协议,比如C++下使用较多的 ACE 框架。而 Thrift 在最近两年脱颖而出,也的确和其跨语言、方便的代码生成框架、以及适于目前高速发展的互联网应用而出名。另外许多人拿 Thrift 和 google 推动的 Protocol Buffer 比较,有不少文章可以参考

国内从目前的状况看,Thrift 相关的讨论和应用还不太多,这也是我想写出来推荐的原因。

一方面国内的寡头大型互联网企业多数使用自己的协议,没有动力开源,也没有引入的需求。一方面小型互联网公司虽然不少,但规模较大的还很少,大部分公司的业务量,还不太需要 RPC 这类多模块多机的架构去支撑。

另一方面,Thrift 的确系出名门,它的代码实现的很优秀,逻辑层次清楚,易于定制扩展。框架代码生成方便,节省很多通讯方面的开发和调试时间。

最近和几位同事一起,做了对 Thrift 协议传输方面的性能测试和调优,结果还是不错的,用起来也很方便。后面有机会可以把测试过程,以及遇到的一些问题拿出来分享。

6 Responses to “Thrift – 开源多语言RPC框架”

  1. jackywdx says:

    这么好的文章我发现得太晚啦,呵呵。要研究研究。

  2. jackywdx says:

    好文章,帮你转载了哈。

  3. […] Thrift – 开源多语言RPC框架 […]

  4. sammychen says:

    一个新项目里全面使用了thrift,感觉非常不错。

  5. Qin Yafei says:

    cool Thrift的源代码写的质量也非常高,值得一看,推荐一下

  6. jjj says:

    一个破工具,连客户端的线程池都不提供一下,哪里好了……都是阻塞模式的

Leave a Reply