Facebook開放輕量開源工具Fbthrift
據媒體消息,今天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開展輕量級代碼工具的系統級融合。”