专业支持:(0512) 63016160 / 销售热线:(0512)63016068
当前在线: 288 今日上线: 1384 今日新增: 3

云计算之RPC框架

文章来源:  中国云计算 发布时间: 2011年02月17日   浏览: 1269   作者:中国云计算
在过去Client-Server的年代,类似CORBA和RMI这样的RPC框架层次不求,因为通过这类技术能将单机的IPC(Inter-process communication,进程间通信)扩展为多机之间的通讯,这对扩展性方面是非常有帮助的,但由于种种原因这些RPC框架并没有被业界大规模的采用。而在云计算时代,需要进行分布式通信的机器越来越多,虽然可以通过使用HTTP协议来进行简易地通信,但是如果能让程序基于一个方便好用,并且非常专业的RPC框架的话,那是再好不过了。本文将给大家介绍当前两个最受欢迎的RPC框架:其一是Google的Protocol Buffers另一个则是Facebook的Thrift。

  Protocol Buffers

  Protocol Buffers,是Google内部使用一种语言中立、平台中立和可扩展的序列化结构数据的方式,并提供基于Java、C++ 和Python这三种语言的实现,每一种实现都包含了相应语言的编译器以及库文件,并且在很多Google的产品中都有使用。它是一种二进制的格式,所以其速度是使用XML进行数据交换的10倍左右。它主要用于两个方面:其一是普通的RPC(Remote Procedure Call,远程方法调用)通信,它可用于分布式应用之间或者异构环境下的通信其二是数据存储方面,因为它自描述,而且压缩很方便,所以可用于对数据进行持久化,比如存储日志信息等,并可被MapReduce程序的处理。

  Thrift

  Thrift 是由 Facebook 开源的一个 RPC 框架,现在已经成为了著名开源组织Apache的孵化项目之一,它主要的几个特点是:其一是支持非常多的语言,包括在 Web开发中很常用的 PHP,以及 C++/Python/Java 等在 Web后端非常常用的语言,甚至还包括近期很流行的 Ruby和Erlang其二是提供完整的 RPC 框架实现,通过脚本就能生成通讯相关的框架代码,比如搭建一个简易的服务只需要几分钟,这样使得开发者只需要集中精力处理好业务逻辑即可,其三是拥有被 Facebook、Last.fm 等不少大规模互联网应用验证过的性能和可用性。总体而言,它的代码实现是很优秀的,逻辑层次非常清楚,易于定制扩展,同时通过框架生成代码非常方便,也节省很多通讯方面的开发和调试时间,并且 Facebook号称Thrift在速度上和Protocol Buffers相比有一定的优势。

  无论是Protocol Buffers还是Thrift都非常优秀,但是还是希望大家能够按照应用自身的实际情况来进行抉择,比如在开发YunTable时,由于性能和开发成本的考虑,我并没有选择这两种RPC框架的其中之一,而是自建一套简易的二进制通讯框架,并且非常简单易用,同时速度飞快。

  参考资料

  1. Thrift –开源多语言RPC框.http://micy.cn/blog/post/35

  2. Protocol Buffer简介. http://kimilv.javaeye.com/blog/411092

  作者简介

  吴朱华,之前在IBM中国研究院参与过多个云计算产品的开发工作,现在专注于YunTable(http://code.google.com/p/yuntable/)和YunEngine(http://yunengine.com/)的研发,并即将发表《剖析云计算》一书,敬请期待。


标签: 计算 , 框架 , RPC
一键分享:

在线客服