Facebook開放輕量開源工具Fbthrift
據(jù)媒體消息,今天Facebook宣布開放另一個版本的軟件庫和代碼生成工具,通過這個工具,不僅可以自動生成分布式的應用程序客戶端,而且可以為服務器端節(jié)省不少代碼編譯的工作量。 “我們沒有讓這一切發(fā)生大的變化,”在接受ARS記者采訪時,F(xiàn)acebook的基礎(chǔ)設(shè)施工程布萊克表示,“它仍然可以與傳統(tǒng)的輕量應用程序進行交互,但在Apache服務器方面,我們做了很多工作從基礎(chǔ)層來提高C++代碼的擴展性,這對我們非常重要,因為我們的許多受歡迎的服務,是建立在這些輕量級代碼的基礎(chǔ)上。” 目前尚不清楚的是,這些已經(jīng)更改的輕量代碼是否已經(jīng)被納入了現(xiàn)有的Apache基金會的工程代碼庫中,因為這些代碼是Facebook利用原有的2007年版的開源Apache許可證進行創(chuàng)建的。這一系統(tǒng)的***版本名叫Fbthrift,在其中增添了一些旨在處理大數(shù)據(jù)的新特點,所包含的服務表現(xiàn)的更為復雜,它包括一個新的C + +代碼生成器組件,目的是用更少的、更密集的內(nèi)存,驅(qū)動重負載的硬件系統(tǒng),支撐更多的上層服務。
這種節(jié)省大量系統(tǒng)工作負擔的機制,通過遠程調(diào)用基于過程的(PRC)分布式組件,驅(qū)動眾多的Facebook平臺和和其他Web應用程序之間的網(wǎng)絡(luò)通信,以及各種移動應用程序后臺。它允許開發(fā)者專注于實際的處理和演示代碼,支持的語言包括除C++語言,還包括Java、Ruby、Perl、Python、PHP和C#代碼的自動生成。在這套組件的說明中,不僅介紹了數(shù)據(jù)結(jié)構(gòu)被發(fā)送和接收的簡單服務接口定義的文件格式,而且將這一使用過程描述為一套可以共用的、自動組裝生成的代碼合集。 “輕量級的設(shè)計起初是為簡單的RPC服務,它只能處理基礎(chǔ)的數(shù)據(jù)行為,原始版本往往存在各種數(shù)據(jù)擁堵問題,”布萊克說,“對數(shù)據(jù)的請求行為,將以相同順序的行為返回。”因為有一些其他的特殊需求,輕量級的應用程序可以以一個高性能的方式來彌補在數(shù)據(jù)等待處理過程中,所造成的損失。“所以我們添加了對無序操作的支持,當數(shù)據(jù)返回時,一切都已經(jīng)準備好了。”
異步處理的請求,將使得性能進一步提升,F(xiàn)acebook的工程師必須進一步增大內(nèi)存,以便提高所生成的C++代碼的數(shù)據(jù)處理能力。輕量級的C++代碼生成將充分使用相同的內(nèi)存空間,為每個請求安排合理的順序,以便處理原來無法處理的數(shù)據(jù)行為。因此,facebook的工程團隊推出了在線的、傻瓜式的開放源代碼類庫IOBuf,它可以為每個行為請求釋放新的緩存,減少性能損失,優(yōu)化系統(tǒng)運行效率。
另一個重要特點是,它增加了一個新的報頭協(xié)議,稱為Theader,這將避免新的功能,與現(xiàn)有的輕量化服務之間的互相不兼容。“在Tumblr方面,我們也有我們自己的版本”布萊克表示,“通過這一服務協(xié)議,可以對指定請求的元數(shù)據(jù)信息,進行分布式跟蹤,并對信號實現(xiàn)資源重載。我們將一個開放源代碼的版本發(fā)布在線上,人們可以使用它作為實現(xiàn)某種功能的參考,未來我們或許會與Apache開展輕量級代碼工具的系統(tǒng)級融合。”