揭秘Google+技術(shù)架構(gòu)
谷歌的社交網(wǎng)絡(luò)Google Plus主要基于Java和JavaScript語言,而其視頻會(huì)議框架Hangouts則采用了C/S方式。
期待已久的Google社交網(wǎng)絡(luò)Google Plus或者Google+終于公之于眾了,它采用邀請的形式向部分用戶開放。該項(xiàng)目開始于2010年初,在其底層技術(shù)鮮為人知的情形下,秘密完成了開發(fā)。Joseph Smarr,Google+技術(shù)主管、Plaxo的前CTO,在AnyAsk的訪談中非針對性地透露了一些網(wǎng)絡(luò)的技術(shù)細(xì)節(jié)。我們聯(lián)系了Smarr試圖獲取有關(guān)Google+架構(gòu)的更多細(xì)節(jié),但被拒絕了,他承諾更多信息會(huì)在不久的將來公布的。
按照Smarr的說法,Google+的服務(wù)端使用了Java語言和Guice,而客戶端基于開源的跨瀏覽器框架Closure,采用了大量的JavaScript。Closure是一組JavaScript工具,方便開發(fā)人員編寫富Web應(yīng)用程序。Google的Gmail、Maps和Docs均使用了該框架。有趣的是Google并沒有采用Wave和AdWords中使用的GWT,GWT主要面向Java開發(fā)者而非JavaScript開發(fā)者的。為了“確保即使在AJAX應(yīng)用中,URL也很美觀(對老版本瀏覽器,回煺Hash-Fragment)”,添加了HTML 5的歷史API,另外,Closure模板也常常在服務(wù)端呈現(xiàn),從而做到“在JavaScript代碼加載前顯示頁面,然后JavaScript找到正確的DOM節(jié)點(diǎn)并掛接事件處理器等,使其響應(yīng)”。Smarr進(jìn)一步解釋到:
Closure模板最酷的事情是它既可以編譯成Java也可以編譯成JavaScript。所以,我們使用Java服務(wù)端把模板轉(zhuǎn)換成HTML,但是也可以在客戶端使用JavaScript動(dòng)態(tài)地顯示。例如,如果你直接輸入詳細(xì)資料頁面的URL,我們將在服務(wù)端呈現(xiàn)它,但是如果你進(jìn)入頁面流中,然后導(dǎo)航到某人的詳細(xì)資料頁面,我們將使用同一模板在客戶端使用AJAX技術(shù)來顯示。
后端采用的是BigTable和Colossus,它是Google的實(shí)時(shí)搜索所使用的文件系統(tǒng)。
Smarr承認(rèn)Google+團(tuán)隊(duì)借鑒了Google和其他公司的很多東西,他們是“站在巨人的肩膀上,充分學(xué)習(xí)了我們以前的和業(yè)界其他社交產(chǎn)品”,這里指的應(yīng)該就是Facebook和Twitter,而且本產(chǎn)品在很多方面看上去和Facebook很像。
Google+ Hangouts是在線云視頻會(huì)議平臺(tái),基于XMPP、Jingle、RTP、ICE、STUN、SRTP等,它與采用P2P網(wǎng)絡(luò)的Skype方法完全不同。Hangouts是C/S及云技術(shù),主要依賴于Google的基礎(chǔ)設(shè)施。目前還沒有數(shù)據(jù)表明Hangouts會(huì)消耗多少資源,但估計(jì)應(yīng)該會(huì)很多。所有這些都是為了提供低遲延(小于100ms)的流暢的群組溝通。
Hangouts要求與Google Talk相同的插件,不過,工程師們正在努力遷移到WebRTC上。WebRTC是視頻通信的JavaScript框架,由Google、Mozilla和Opera提供支持的開源產(chǎn)品。當(dāng)WebRTC集成到Chrome后,在Firefox、Opera或Chrome中運(yùn)行Hangouts時(shí)就無需下載插件了。到時(shí),Hangouts將使用集成在WebRTC中的VP8編碼,而不是現(xiàn)在使用的H.264。
Christian Oestlien,Google+的項(xiàng)目經(jīng)理,透露Google為企業(yè)用戶提供了特別的特性,如分析及和其他企業(yè)賬戶的集成等,但他沒有透露詳細(xì)信息。他讓企業(yè)先不要?jiǎng)?chuàng)建Google+賬戶,暫且等待功能開放,否則也會(huì)被刪除的。
原文:http://www.infoq.com/cn/news/2011/07/Google-Plus
【編輯推薦】