本課程的主題是“互聯(lián)網(wǎng)大流量網(wǎng)站架構(gòu)”,講師Kent以自己曾經(jīng)管理過的一個項目為例,講解了在大型網(wǎng)站架構(gòu)中所遇到的一些問題及解決方法。
Web2.0的興起,掀起了互聯(lián)網(wǎng)新一輪的網(wǎng)絡(luò)創(chuàng)業(yè)大潮。以用戶為導(dǎo)向的新網(wǎng)站建設(shè)概念,細(xì)分了網(wǎng)站功能和用戶群,不僅成功的造就了一大批新生的網(wǎng)站,也極大的方便了上網(wǎng)的人們。但Web2.0以用戶為導(dǎo)向的理念,使得新生的網(wǎng)站有了新的特點(diǎn)——高并發(fā),高流量,數(shù)據(jù)量大,邏輯復(fù)雜等,對網(wǎng)站建設(shè)也提出了新的要求。
首先在整個網(wǎng)絡(luò)的高度討論了使用鏡像網(wǎng)站,CDN內(nèi)容分發(fā)網(wǎng)絡(luò)等技術(shù)對負(fù)載均衡帶來的便利及各自的優(yōu)缺點(diǎn)比較。然后在局域網(wǎng)層次對第四層交換技術(shù),包括硬件解決方案F5和軟件解決方案LVS,進(jìn)行了簡單的討論。接下來在單服務(wù)器層次,本文著重討論了單臺服務(wù)器的Socket優(yōu)化,硬盤級緩存技術(shù),內(nèi)存級緩存技術(shù),CPU與IO平衡技術(shù)(即以運(yùn)算為主的程序與以數(shù)據(jù)讀寫為主的程序搭配部署),讀寫分離技術(shù)等。在應(yīng)用層,本文介紹了一些大型網(wǎng)站常用的技術(shù),以及選擇使用該技術(shù)的理由。最后,在架構(gòu)的高度討論了網(wǎng)站擴(kuò)容,容錯等問題。
本文以理論與實(shí)踐相結(jié)合的形式,結(jié)合作者實(shí)際工作中得到的經(jīng)驗(yàn),具有較廣泛的適用性。
1 引言
1.1 互聯(lián)網(wǎng)的發(fā)展
最近十年間,互聯(lián)網(wǎng)已經(jīng)從一個單純的用于科研的,用來傳遞靜態(tài)文檔的美國內(nèi)部網(wǎng)絡(luò),發(fā)展成了一個應(yīng)用于各行各業(yè)的,傳送著海量多媒體及動態(tài)信息的全球網(wǎng)絡(luò)。從規(guī)模上看,互聯(lián)網(wǎng)在主機(jī)數(shù)、帶寬、上網(wǎng)人數(shù)等方面幾乎一直保持著指數(shù)增長的趨勢,2006年7月,互聯(lián)網(wǎng)上共有主機(jī)439,286,364 臺,WWW 站點(diǎn)數(shù)量達(dá)到 96,854,877個 [1]。全球上網(wǎng)人口在2004 年達(dá)到 7 億 2900萬 [2],中國的上網(wǎng)人數(shù)在 2006 年 12 月達(dá)到了約 1億3700 萬[3]。另一方面,互聯(lián)網(wǎng)所傳遞的內(nèi)容也發(fā)生了巨大的變化,早期互聯(lián)網(wǎng)以靜態(tài)、文本的公共信息為主要內(nèi)容,而目前的互聯(lián)網(wǎng)則傳遞著大量的動態(tài)、多媒體及人性化的信息,人們不僅可以通過 互聯(lián)網(wǎng)閱讀到動態(tài)生成的信息,而且可以通過它使用電子商務(wù)、即時通信、網(wǎng)上游戲等交互性很強(qiáng)的服務(wù)。因此,可以說互聯(lián)網(wǎng)已經(jīng)不再僅僅是一個信息共享網(wǎng)絡(luò),而已經(jīng)成為了一個無所不在的交互式服務(wù)的平臺。
1.2 互聯(lián)網(wǎng)網(wǎng)站建設(shè)的新趨勢
互聯(lián)網(wǎng)不斷擴(kuò)大的規(guī)模,日益增長的用戶群,以及web2.0[4]的興起,對互聯(lián)網(wǎng)網(wǎng)站建設(shè)提出了新的要求:
高性能和高可擴(kuò)展性。2000 年 5 月,訪問量排名世界第一(統(tǒng)計數(shù)據(jù)來源[5])的Yahoo [6]聲稱其日頁瀏覽數(shù)達(dá)到 6 億 2500 萬,即每秒約 30,000 次HTTP 請求(按每個頁面瀏覽平均產(chǎn)生 4 次請求計算) 。這樣大規(guī)模的訪問量對服務(wù)的性能提出了非常高的要求。更為重要的是,互聯(lián)網(wǎng)受眾的廣泛性,使得成功的互聯(lián)網(wǎng)服務(wù)的訪問量增長潛力和速度非常大,因此服務(wù)系統(tǒng)必須具有非常好的可擴(kuò)展性,以應(yīng)付將來可能的服務(wù)增長。
支持高度并發(fā)的訪問。高度并發(fā)的訪問對服務(wù)的存儲與并發(fā)能力提出了很高的要求,當(dāng)前主流的超標(biāo)量和超流水線處理器能處理的并發(fā)請求數(shù)是有限的,因?yàn)殡S著并發(fā)數(shù)的上升,進(jìn)程調(diào)度的開銷會很快上升。互聯(lián)網(wǎng)廣域網(wǎng)的本質(zhì)決定了其訪問的延遲時間較長,因此一個請求完成時間也較長,按從請求產(chǎn)生到頁面下載完成 3 秒計算, Yahoo 在 2000 年 5 月時平均有 90,000 個并發(fā)請求。而且對于較復(fù)雜的服務(wù),服務(wù)器往往要維護(hù)用戶會話的信息,例如一個互聯(lián)網(wǎng)網(wǎng)站如果每天有 100 萬次用戶會話,每次 20分鐘的話,那平均同時就會有約 14000 個并發(fā)會話。
高可用性。互聯(lián)網(wǎng)服務(wù)的全球性決定了其每天 24 小時都會有用戶訪問,因此任何服務(wù)的停止都會對用戶造成影響。而對于電子商務(wù)等應(yīng)用,暫時的服務(wù)中止則意味著客戶的永久失去及大量的經(jīng)濟(jì)損失,例如 ebay.com[7]1999 年 6 月的一次 22小時的網(wǎng)站不可訪問,對此網(wǎng)站的 380萬用戶的忠誠度造成巨大影響,使得 Ebay 公司不得不支付了近500萬美元用于補(bǔ)償客戶的損失,而該公司的市值同期下降了 40 億美元[8]。因此,關(guān)鍵互聯(lián)網(wǎng)應(yīng)用的可用性要求非常高。
1.3 新浪播客的簡介
以YouTube[9]為代表的微視頻分享網(wǎng)站近來方興未艾,僅2006年一年,國內(nèi)就出現(xiàn)近百家仿YouTube的微視頻分享網(wǎng)站[10],試圖復(fù)制YouTube的成功模式。此類網(wǎng)站可以說是Web2.0概念下的代表網(wǎng)站,具有Web2.0網(wǎng)站所有典型特征:高并發(fā),高流量,數(shù)據(jù)量大,邏輯復(fù)雜,用戶分散等等。新浪[11]作為國內(nèi)最大的門戶網(wǎng)站,在2005年成功運(yùn)作新浪博客的基礎(chǔ)上,于2006年底推出了新浪播客服務(wù)。新浪播客作為國內(nèi)門戶網(wǎng)站中第一個微視頻分享服務(wù)的網(wǎng)站,依靠新浪網(wǎng)站及新浪博客的巨大人氣資源,在推出后不到半年的時間內(nèi),取得了巨大的成功:同類網(wǎng)站中上傳視頻數(shù)量第一、流量增長最快、用戶數(shù)最多[12],所有這些成績的取得的背后,是巨大的硬件投入,良好的架構(gòu)支撐和靈活的應(yīng)用層軟件設(shè)計。
2.1 鏡像網(wǎng)站技術(shù)
鏡像網(wǎng)站是指將一個完全相同的站點(diǎn)放到幾個服務(wù)器上,分別有自己的URL,這些服務(wù)器上的網(wǎng)站互相稱為鏡像網(wǎng)站[13]。鏡像網(wǎng)站和主站并沒有太大差別,或者可以視為主站的拷貝。鏡像網(wǎng)站的好處是:如果不能對主站作正常訪問(如服務(wù)器故障,網(wǎng)絡(luò)故障或者網(wǎng)速太慢等),仍能通過鏡像服務(wù)器獲得服務(wù)。不便之處是:更新網(wǎng)站內(nèi)容的時候,需要同時更新多個服務(wù)器;需要用戶記憶超過一個網(wǎng)址,或需要用戶選擇訪問多個鏡像網(wǎng)站中的一個,而用戶選擇的,不一定是最優(yōu)的。在用戶選擇的過程中,缺乏必要的可控性。