2010年3月23日星期二

Facebook Thrift(转)

转:http://group.mtime.com/ProgrammerLife/discussion/586818/
Facebook Thrift
简单介绍:
是一个跨语言的RPC开发框架,绑定到多种语言,有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml
最初由facebook开发,facebook在2007年4月开放了源码,转而在2008年提交给了Apache基金维护。

官方网址:
http://incubator.apache.org/thrift/





Facebook官方白皮书翻译:
//下载地址:http://incubator.apache.org/thrift/static/thrift-20070401.pdf

摘要:
Thrift由一个软件库和一系列的代码生成工具组成,由Facebook开发。目的是为了加快软件开发和实现高效和可扩展的后台服务。主要目标是不同程序开语言之间实现高效和可靠的通信,这需要将不同语言之间抽象出一个通用层,然后由不同语言来实现这个通用层。在这里要特别指出的是,Thrift允许开发人员定义数据类型和服务接口(定义在一个中性语言文件里),并通过这个文件生成构建RPC客户端和服务端所需的代码。

本篇描述了开发Thrift的动机和设计的选择,另外还有一些有趣的实现细节。这不是为了用于研究,而是为了剖析为什么我们会这样做还有我们做了哪些东西。

1.介绍:
当Facebook的流量和网络结构扩充之后,网站的许多操作(查询,选择,分发,登录)所需的资源,从技术上来说LAMP的框架已经很难满足。在我们这些服务的实现上,结合性能,简易,开发速度,足够多的可用库等因素,选择了许多不同的开发语言。总体上来说,Facebook的开发文化倾向于选择最好的工具和各种语言间实现一个标准,尽可能地不去接受一些遗留下来的缺陷。

在给出了设计上准则之后,我们现在面临构建高性能的,透明的衔接各种程序语言的挑战。我们发现目前现有的大多数的实现方案有太多的限制,要不是没有足够地数据类型上的自由,或是遇到性能过低的问题。


未完...

没有评论: