Google+的一些技術細節

發表於2011-07-22

谷歌的社交網路Google Plus主要基於Java和JavaScript語言,而其視訊會議框架Hangouts則採用了C/S方式。

期待已久的Google社交網路Google Plus或者Google+終於公之於眾了,它採用邀請的形式向部分使用者開放。該專案開始於2010年初,在其底層技術鮮為人知的情形下,祕密完成了開發。Joseph Smarr,Google+技術主管、Plaxo的前CTO,在AnyAsk的訪談中非針對性地透露了一些網路的技術細節。我們聯絡了Smarr試圖獲取有關Google+架構的更多細節,但被拒絕了,他承諾更多資訊會在不久的將來公佈的。

按照Smarr的說法,Google+的服務端使用了Java語言和Guice,而客戶端基於開源的跨瀏覽器框架Closure,採用了大量的JavaScript。Closure是一組JavaScript工具,方便開發人員編寫富Web應用程式。Google的Gmail、Maps和Docs均使用了該框架。有趣的是Google並沒有採用Wave和AdWords中使用的GWT,GWT主要面向Java開發者而非JavaScript開發者的。為了“確保即使在AJAX應用中,URL也很美觀(對老版本瀏覽器,回退Hash-Fragment)”,新增了HTML5的歷史API,另外,Closure模板也常常在服務端呈現,從而做到“在JavaScript程式碼載入前顯示頁面,然後JavaScript找到正確的DOM節點並掛接事件處理器等,使其響應”。Smarr進一步解釋到:

Closure模板最酷的事情是它既可以編譯成Java也可以編譯成JavaScript。所以,我們使用Java服務端把模板轉換成 HTML,但是也可以在客戶端使用JavaScript動態地顯示。例如,如果你直接輸入詳細資料頁面的URL,我們將在服務端呈現它,但是如果你進入頁面流中,然後導航到某人的詳細資料頁面,我們將使用同一模板在客戶端使用AJAX技術來顯示。

後端採用的是BigTable和Colossus,它是Google的實時搜尋所使用的檔案系統。

Smarr承認Google+團隊借鑑了Google和其他公司的很多東西,他們是“站在巨人的肩膀上,充分學習了我們以前的和業界其他社交產品”,這裡指的應該就是Facebook和Twitter,而且本產品在很多方面看上去和Facebook很像。

Google+ Hangouts是線上雲視訊會議平臺,基於XMPP、Jingle、RTP、ICE、STUN、SRTP等,它與採用P2P網路的Skype方法完全不同。 Hangouts是C/S及雲技術,主要依賴於Google的基礎設施。目前還沒有資料表明Hangouts會消耗多少資源,但估計應該會很多。所有這些都是為了提供低遲延(小於100ms)的流暢的群組溝通。

Hangouts要求與Google Talk相同的外掛,不過,工程師們正在努力遷移到WebRTC上。 WebRTC是視訊通訊的JavaScript框架,由Google、Mozilla和Opera提供支援的開源產品。當WebRTC整合到Chrome 後,在Firefox、Opera或Chrome中執行Hangouts時就無需下載外掛了。到時,Hangouts將使用整合在WebRTC中的VP8 編碼,而不是現在使用的H.264。

Christian Oestlien,Google+的專案經理,透露Google為企業使用者提供了特別的特性,如分析及和其他企業賬戶的整合等,但他沒有透露詳細資訊。他讓企業先不要建立Google+賬戶,暫且等待功能開放,否則也會被刪除的。

譯文:InfoQ
原文:Google+ Technological Details

相關文章