新浪陳爾冬:大數(shù)據(jù)下Web Server面臨的挑戰(zhàn)
原創(chuàng)從只是簡單的數(shù)據(jù)讀寫,到現(xiàn)在的跨平臺數(shù)據(jù)分享,海量數(shù)據(jù)的讀寫與實時分享為每個互聯(lián)網(wǎng)公司帶來了嚴(yán)峻的考驗,無論是數(shù)據(jù)庫還服務(wù)器的性能。在面對大數(shù)據(jù)、高并發(fā)的挑戰(zhàn)時,Web Server作為底層承載平臺又將如何應(yīng)對?還將有哪些挑戰(zhàn)?今天記者聯(lián)系到新浪研發(fā)中心系統(tǒng)開發(fā)部高級系統(tǒng)工程師@陳爾冬 來說一說Web Server的這些事。
陳爾冬:新浪網(wǎng)研發(fā)中心系統(tǒng)架構(gòu)師,擅長大規(guī)模Linux集群環(huán)境的自動化管理與運維、問題分析、性能調(diào)節(jié)和架構(gòu)設(shè)計優(yōu)化,目前同時負(fù)責(zé)新浪私有云平臺的研發(fā)與運維。
互聯(lián)網(wǎng)發(fā)展至今我們已經(jīng)歷了Web1.0時代與Web2.0時代,現(xiàn)在又在經(jīng)歷移動互聯(lián)網(wǎng)時代。Web Server在這三個不同的時代中都扮演著底層承載平臺的角色,但是在這三個互聯(lián)網(wǎng)時期中用戶對于服務(wù)的需求是完全不同的。Web1.0時代,用戶只需要服務(wù)器完成簡單的讀寫任務(wù);Web2.0時代,用戶需要和其他人保持相應(yīng)的互動;而現(xiàn)在,不僅僅是之前的兩種需求,跨平臺的數(shù)據(jù)即時分享成為了更重要的用戶需求。那么在這三個不同時期中對于Web Server的性能上的需求有哪些不同?
在不同時期用戶對于Web Server性能上的需求陳爾冬表示:“隨著互聯(lián)網(wǎng)的發(fā)展,業(yè)務(wù)邏輯也越來越復(fù)雜,每頁面帶給Web Server的請求數(shù)和CPU計算量越來越高;另一方面,隨著客戶端性能越來越好、用戶接入帶寬越來越越來越高,又希望Web Server的延遲越來越低、響應(yīng)時間越來越短。雖然Web Server硬件設(shè)備的性能越來越好,主流Web Server的性能在C10k問題攻破后也擁有了質(zhì)的飛躍,但對于個別超大規(guī)模互聯(lián)網(wǎng)公司來說,主流Web Server軟件的功能或性能還是可能存在不少不盡如意的地方。”
目前大數(shù)據(jù)、高并發(fā)、高負(fù)載的數(shù)據(jù)處理已經(jīng)成為了眾多互聯(lián)網(wǎng)公司面臨的首要問題。解決這些問題主要取決于數(shù)據(jù)庫與整個系統(tǒng)架構(gòu)的性能,但是對于Web Server這個底層平臺來說又當(dāng)如何應(yīng)對大數(shù)據(jù)、高并發(fā)帶來的挑戰(zhàn)呢?對于企業(yè)來說,進行Web Server的二次開發(fā)是否能解決這些問題呢?
陳爾冬:原則上不僅僅是數(shù)據(jù)庫,而是數(shù)據(jù),數(shù)據(jù)的產(chǎn)生、傳輸、處理、存儲以及挖掘一系列過程。數(shù)據(jù)庫僅僅是中間一環(huán)。因為數(shù)據(jù)庫和其他數(shù)據(jù)相關(guān)組件天然有狀態(tài)(數(shù)據(jù)本身特點決定的),不像Web Server這樣易于擴展(主流使用方法都可以實現(xiàn)通過簡單點增加物理服務(wù)器來擴展Web Server性能),直接導(dǎo)致了海量數(shù)據(jù)的挑戰(zhàn)是目前大規(guī)模和超大規(guī)?;ヂ?lián)網(wǎng)公司的首要難題。相對來說,易于擴展的Web Server,問題變的不是那么緊迫。所以目前只有技術(shù)力量雄厚的公司(如百度、淘寶、騰訊)才會在Web Server做深度的二次開發(fā)。一般來說,在Web Server二次開發(fā)工作上還是集中在滿足特殊的功能需求。
但是也有一些例外,這就是云計算。云計算服務(wù)提供商,特別是PaaS云計算提供商希望向用戶提供高性能、高可用性、高可擴展性的服務(wù),希望用戶不用關(guān)心底層實現(xiàn)細(xì)節(jié)同時用戶可以按實際使用量付費。
這就帶來以下兩個挑戰(zhàn):
- 如果是系統(tǒng)平臺PaaS提供商,就需要對用戶抽象系統(tǒng)細(xì)節(jié)。如數(shù)據(jù)庫平臺提供商希望對用戶抽象底層數(shù)據(jù)庫服務(wù)器架構(gòu)或者部署形式很多成熟的開源系統(tǒng)軟件其實不不能完全滿足云計算的需求,云計算提供商需要自己開發(fā)軟件去整合開源軟件并提高其可用性、擴展性或故障容忍能力由于需要按需支付,所以需要能夠?qū)τ脩羰褂们闆r進行審計并時間計費。
- 面對這些挑戰(zhàn),很多云計算提供商選擇在系統(tǒng)軟件前搭建一層自己的API層并以此作為系統(tǒng)平臺的入口,這樣只要把自己的業(yè)務(wù)邏輯繼承在這個API層就可以解決上面所有問題。而構(gòu)件API層的主要方法之一是基于Web Server二次開發(fā)提供高性能的RESTful API。***特點的代表就是agentzh(章亦春)的Nginx Conf編程。
就目前而言,用戶需要的不僅僅是滿足服務(wù)需求,更重要的是優(yōu)秀的用戶體驗,對于一個架構(gòu)師來說應(yīng)該本著什么樣的設(shè)計理念去設(shè)計并優(yōu)化大數(shù)據(jù)下的系統(tǒng)架構(gòu)呢?
陳爾冬:這個問題有點泛。架構(gòu)師需要考慮和權(quán)衡得緯度很多,性能和功能僅僅是一方面。架構(gòu)師需要在功能、性能、穩(wěn)定性、易用易管理等多個維護之間找到一個符合自己公司特點得平衡點,并且不斷去調(diào)整和優(yōu)化系統(tǒng)架構(gòu)去無限接近那個平衡點。
現(xiàn)在做技術(shù)無非都是從業(yè)務(wù)需求入手,對于新浪來說近兩年以來新浪微博已經(jīng)成為了國內(nèi)***的網(wǎng)絡(luò)社交平臺,相比09年內(nèi)測的時候目前新浪微博在服務(wù)器上做過哪些調(diào)整呢?
陳爾冬:新浪微博之前主要在數(shù)據(jù)相關(guān)的組件上做的工作比較多,主要因為這方面給我們帶來的挑戰(zhàn)***。比較有代表的工作如Feed系統(tǒng)、關(guān)系系統(tǒng)、緩存系統(tǒng)、可支持跨IDC多點寫入的消息系統(tǒng)等。
【編輯推薦】