据媒体消息,今天">Facebook宣布开放另一个版本的软件库和代码生成工具,通过这个工具,不仅可以自动生成分布式的应用程序客户端,而且可以为服务器端节省不少代码编译的工作量。 “我们没有让这一切发生大的变化,”在接受ARS记者采访时,Facebook的基础设施工程布莱克表示,“它仍然可以与传统的轻量应用程序进行交互,但在Apache服务器方面,我们做了很多工作从基础层来提高C++代码的扩展性,这对我们非常重要,因为我们的许多受欢迎的服务,是建立在这些轻量级代码的基础上。” 目前尚不清楚的是,这些已经更改的轻量代码是否已经被纳入了现有的Apache基金会的工程代码库中,因为这些代码是Facebook利用原有的2007年版的开源Apache许可证进行创建的。这一系统的最新版本名叫Fbthrift,在其中增添了一些旨在处理大数据的新特点,所包含的服务表现的更为复杂,它包括一个新的C + +代码生成器组件,目的是用更少的、更密集的内存,驱动重负载的硬件系统,支撑更多的上层服务。
这种节省大量系统工作负担的机制,通过远程调用基于过程的(PRC)分布式组件,驱动众多的Facebook平台和和其他Web应用程序之间的网络通信,以及各种移动应用程序后台。它允许开发者专注于实际的处理和演示代码,支持的语言包括除C++语言,还包括Java、Ruby、Perl、Python、PHP和C#代码的自动生成。在这套组件的说明中,不仅介绍了数据结构被发送和接收的简单服务接口定义的文件格式,而且将这一使用过程描述为一套可以共用的、自动组装生成的代码合集。 “轻量级的设计起初是为简单的RPC服务,它只能处理基础的数据行为,原始版本往往存在各种数据拥堵问题,”布莱克说,“对数据的请求行为,将以相同顺序的行为返回。”因为有一些其他的特殊需求,轻量级的应用程序可以以一个高性能的方式来弥补在数据等待处理过程中,所造成的损失。“所以我们添加了对无序操作的支持,当数据返回时,一切都已经准备好了。”
异步处理的请求,将使得性能进一步提升,Facebook的工程师必须进一步增大内存,以便提高所生成的C++代码的数据处理能力。轻量级的C++代码生成将充分使用相同的内存空间,为每个请求安排合理的顺序,以便处理原来无法处理的数据行为。因此,facebook的工程团队推出了在线的、傻瓜式的开放源代码类库IOBuf,它可以为每个行为请求释放新的缓存,减少性能损失,优化系统运行效率。
另一个重要特点是,它增加了一个新的报头协议,称为Theader,这将避免新的功能,与现有的轻量化服务之间的互相不兼容。“在Tumblr方面,我们也有我们自己的版本”布莱克表示,“通过这一服务协议,可以对指定请求的元数据信息,进行分布式跟踪,并对信号实现资源重载。我们将一个开放源代码的版本发布在线上,人们可以使用它作为实现某种功能的参考,未来我们或许会与Apache开展轻量级代码工具的系统级融合。”