揭秘Google+技術架構
谷歌的社交網絡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)”,添加了HTML 5的歷史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+賬戶,暫且等待功能開放,否則也會被刪除的。
原文:http://www.infoq.com/cn/news/2011/07/Google-Plus
【編輯推薦】