專訪新浪微博技術(shù)經(jīng)理?xiàng)钚l(wèi)華:微博產(chǎn)品應(yīng)用開發(fā)談
原創(chuàng)【51CTO獨(dú)家報(bào)道】隨著新浪等門戶網(wǎng)站對(duì)微博產(chǎn)品的推出,越來越多的人開始使用這種新的Web2.0應(yīng)用方式,微博客的產(chǎn)品形式也受到越來越多的關(guān)注。
對(duì)于開發(fā)人員而言,微博產(chǎn)品的開發(fā)與傳統(tǒng)的Web應(yīng)用開發(fā)有哪些不同?在開發(fā)與實(shí)現(xiàn)方面會(huì)遇到哪些技術(shù)難點(diǎn)?如何走進(jìn)微博應(yīng)用的開發(fā)?帶著這些問題,51CTO記者在上周舉行的Qcon 2010上有幸采訪到新浪的產(chǎn)品部技術(shù)經(jīng)理,主要負(fù)責(zé)新浪微博開發(fā)的楊衛(wèi)華先生。
微博開發(fā)與傳統(tǒng)Web開發(fā)
微博是Web2.0的一種核心應(yīng)用,與博客、論壇等傳統(tǒng)的Web 2.0產(chǎn)品相比,博客和論壇更關(guān)注內(nèi)容到保存和展現(xiàn),而微博除了具有上述的功能外,還具有自己的特點(diǎn),在采訪中,楊衛(wèi)華先生指出,微博產(chǎn)品具有實(shí)時(shí)性、關(guān)注與被關(guān)注、內(nèi)容聚合三個(gè)特點(diǎn)。
實(shí)時(shí)性:微博的消息傳送需要更小的延遲,發(fā)布的消息用戶可以及時(shí)的看到自己所關(guān)注的信息;博客、論壇的實(shí)現(xiàn)形式延遲性較大,并不適合微博的技術(shù)特點(diǎn)。
關(guān)注與被關(guān)注:微博用戶的主要應(yīng)用形態(tài)聚集在關(guān)注與被關(guān)注者消息的實(shí)時(shí)傳遞,這將設(shè)計(jì)到大量關(guān)注著的內(nèi)容聚合和展示。
內(nèi)容聚合:所有關(guān)注者的消息會(huì)聚合呈現(xiàn)在用戶頁面,而且保證最佳的實(shí)時(shí)性。
在具體的技術(shù)開發(fā)中,一些主要的技術(shù)難點(diǎn)將圍繞著這三個(gè)特點(diǎn)展開。微博產(chǎn)品中,用戶所關(guān)注的多個(gè)對(duì)象的實(shí)時(shí)聚合展示,在一些應(yīng)用場(chǎng)景下,將導(dǎo)致下面的問題——訪問峰值。
微博開發(fā)的技術(shù)難點(diǎn)——訪問峰值
一般Web應(yīng)用的訪問量是可以預(yù)估的,比如博客或CMS系統(tǒng),通過一些流量監(jiān)控空間和用戶行為分析,可以預(yù)先估計(jì)到用戶訪問量的時(shí)段特點(diǎn)。但微博不同,作為一個(gè)信息傳播平臺(tái),在一些突發(fā)事件、熱門事件等發(fā)生時(shí),會(huì)有大批量的用戶參加進(jìn)來,系統(tǒng)會(huì)隨時(shí)遇到訪問的峰值。
訪問峰值的問題,新浪主要從以下三個(gè)方面來解決
硬件:面對(duì)微博隨時(shí)可能發(fā)生的高訪問量,新浪首先從硬件基礎(chǔ)實(shí)施和網(wǎng)絡(luò)環(huán)境上做保障,在全國(guó)各省中心城市的一線機(jī)房部署服務(wù)器,保證時(shí)時(shí)暢通;
開發(fā):在程序?qū)崿F(xiàn)上,新浪微博對(duì)功能代碼嚴(yán)格把關(guān),并在上線之前進(jìn)行充分的壓力測(cè)試,找出性能瓶頸并解決。
另外,對(duì)圖片、JS等靜態(tài)資源新浪微博采用CDN的方式來分擔(dān)流量。
海量數(shù)據(jù)處理
隨著Web應(yīng)用的發(fā)展,越來越多的網(wǎng)站遇到海量數(shù)據(jù)的存儲(chǔ)和處理方面的問題。微博產(chǎn)品更是如此。隨著應(yīng)用時(shí)間和用戶的增長(zhǎng),微博的消息數(shù)量也會(huì)成指數(shù)級(jí)的增長(zhǎng),同樣也會(huì)面臨到海量數(shù)據(jù)存儲(chǔ)的問題。
目前,海量數(shù)據(jù)存在兩種解決方案,傳統(tǒng)的關(guān)系數(shù)據(jù)庫和NoSQL。
在關(guān)系數(shù)據(jù)庫中,通過sharding的手段將數(shù)據(jù)分散到多臺(tái)服務(wù)器上。對(duì)于微博這種產(chǎn)品,由于話題、熱門的討論是有時(shí)段的,可以通過時(shí)間來分片進(jìn)行sharding。
還有一種是NoSQL的方法。目前知名微博網(wǎng)站Twitter已經(jīng)在嘗試Cassandra分布式數(shù)據(jù)庫,對(duì)于數(shù)據(jù)規(guī)模增長(zhǎng)非??斓木W(wǎng)站,NoSQL的Key-Value存儲(chǔ)形式可以保證很好的伸縮性和高可用性,產(chǎn)品內(nèi)部可以實(shí)現(xiàn)不停機(jī)的修改能力。
在之前對(duì)豆瓣網(wǎng)首席架構(gòu)師洪強(qiáng)寧先生的采訪中,他也強(qiáng)調(diào)了NoSQL對(duì)大數(shù)據(jù)量Web2.0網(wǎng)站的好處。
走進(jìn)微博應(yīng)用開發(fā)
目前Twitter的70%以上的流量都來自第三方API的應(yīng)用,在采訪中,楊衛(wèi)華先生透露,新浪也正在計(jì)劃開放平臺(tái),希望更多應(yīng)用開發(fā)者寫應(yīng)用;希望更好的創(chuàng)意可以在新浪微博體現(xiàn)。
對(duì)于傳統(tǒng)的Web開發(fā)者,該如何走進(jìn)微博應(yīng)用的開發(fā)呢?
楊衛(wèi)華先生說,做微博應(yīng)用開發(fā),一方面,要找一個(gè)好的創(chuàng)意,對(duì)應(yīng)用的形式和內(nèi)容有一個(gè)好的把握。國(guó)外微博平臺(tái)有很多好的應(yīng)用,但借鑒之外,還要注意中國(guó)用戶的使用習(xí)慣。
第二點(diǎn)就是習(xí)慣與開放平臺(tái)和API的使用。楊衛(wèi)華先生推薦了新浪云開發(fā)平臺(tái)(SAE),這是新浪推出的云計(jì)算平臺(tái),目前還處于Beta版。使用新浪云平臺(tái),可以方便的對(duì)系統(tǒng)進(jìn)行擴(kuò)展,不需要擔(dān)心硬件和設(shè)備。
關(guān)于CDN:CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其目的是通過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)"邊緣",使用戶可以就近取得所需的內(nèi)容,解決Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。
關(guān)于NoSQL:請(qǐng)參考51CTO之前的報(bào)道《對(duì)SQL說不!NoSQL的數(shù)據(jù)庫技術(shù)革命》和《探尋關(guān)系數(shù)據(jù)庫和ORM的最佳替代者》
關(guān)于Cassandra:Cassandra最初由Facebook開發(fā),后轉(zhuǎn)變成了開源項(xiàng)目。它是一個(gè)網(wǎng)絡(luò)社交云計(jì)算方面理想的數(shù)據(jù)庫。以Amazon專有的完全分布式的Dynamo為基礎(chǔ),結(jié)合了Google BigTable基于列族(Column Family)的數(shù)據(jù)模型。P2P去中心化的存儲(chǔ)。
關(guān)于SAE:新浪的云開發(fā)平臺(tái),類似Google的GAE,提供PHP語言的支持,目前還處于Beta階段。
點(diǎn)擊第二頁查看楊衛(wèi)華先生訪談視頻#p#
訪談視頻
【編輯推薦】
- 專訪豆瓣網(wǎng)首席架構(gòu)師洪強(qiáng)寧:Python,簡(jiǎn)單的力量
- 專訪Twitter工程師:SNS產(chǎn)品發(fā)展途中的那些事兒
- 專訪豆瓣網(wǎng)首席架構(gòu)師洪強(qiáng)寧:BeansDB與NoSQL的應(yīng)用與發(fā)展
- 專訪鄧草原:從對(duì)象和函數(shù)式到現(xiàn)實(shí)世界的項(xiàng)目