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