透過(guò)12306五大焦點(diǎn)看高性能高并發(fā)系統(tǒng)
幽云十八 發(fā)表于:12年02月20日 09:46 [轉(zhuǎn)載] IT168
焦點(diǎn)五:系統(tǒng)該如何優(yōu)化?
系統(tǒng)優(yōu)化是必不可少的環(huán)節(jié),每一個(gè)成熟的網(wǎng)站和系統(tǒng)都是通過(guò)不斷優(yōu)化而來(lái)的。而12306網(wǎng)站最早暴露出來(lái)的也是優(yōu)化問(wèn)題,隨后經(jīng)過(guò)網(wǎng)友深挖,從12306網(wǎng)站前端的網(wǎng)頁(yè)設(shè)計(jì)到后端的數(shù)據(jù)、緩存、負(fù)載均衡、數(shù)據(jù)分區(qū)等一系列問(wèn)題都提出不同的優(yōu)化方案。
12306網(wǎng)站前端性能優(yōu)化技術(shù)分析
從時(shí)間上來(lái)看,首先引發(fā)12306網(wǎng)站擁堵的是網(wǎng)頁(yè)的問(wèn)題,從12306的首頁(yè)來(lái)看,其總文件大小在900K左右,在極端情況下,如果所有人都是第 一次訪問(wèn)的話,那么每個(gè)人都需要下載1M大小的文件,如果需要在兩分鐘內(nèi)返回的話,那么所需的帶寬需要66Gbps,當(dāng)然這是極端的情況。那么在這種情況 下就需要對(duì)網(wǎng)頁(yè)大小進(jìn)行調(diào)整,盡量少用圖片,因?yàn)閳D片非常消耗帶寬,在這種高并發(fā)的情況下,即使1K大小的文件也極有可能引發(fā)“蝴蝶效應(yīng)”。
同時(shí),由于對(duì)12306網(wǎng)站的訪問(wèn)是部分地域的,可能不同的Web服務(wù)器承受這不同的壓力,這種情況下可通過(guò)DNS負(fù)載均衡器將用戶訪問(wèn)平均分配到各個(gè) Web服務(wù)器上,因?yàn)镠ttp的請(qǐng)求都是短時(shí)的,所以很簡(jiǎn)單的負(fù)載均衡器就能完成這一動(dòng)作。并且,CDN在這個(gè)環(huán)節(jié)能夠提供很大的幫助。
并且,IBM 軟件架構(gòu)師景文童認(rèn)為,12306網(wǎng)站在后期應(yīng)該增加對(duì)智能移動(dòng)終端的支持,那么從當(dāng)前的整體帶寬來(lái)看,盡量不用或少用圖片,并對(duì)網(wǎng)頁(yè)進(jìn)行優(yōu)化將有助于提 高網(wǎng)站的訪問(wèn)速度。在都不是非首次訪問(wèn)的前提下,瀏覽器會(huì)緩存相當(dāng)一部分內(nèi)容,這就會(huì)明顯減少帶寬占用,于是負(fù)載一下子從前端遷移到了后端,數(shù)據(jù)處理瓶頸 一下就凸顯出來(lái),訪問(wèn)者不斷刷出的500錯(cuò)誤即是明證。
除了上述所說(shuō)的這些之外,還可通過(guò)減少前端網(wǎng)頁(yè)的鏈接數(shù)、頁(yè)面靜態(tài)化以及之前提到的緩存技術(shù)來(lái)對(duì)網(wǎng)站前端進(jìn)行優(yōu)化。這些方法能夠明顯解決用戶無(wú)法登 陸或者訪問(wèn)緩慢等問(wèn)題,但并不能解決問(wèn)題真正的實(shí)質(zhì)——購(gòu)票。因?yàn)樯婕暗綄?duì)數(shù)據(jù)庫(kù)進(jìn)行查詢以及寫入等操作,后端優(yōu)化就顯得尤為重要。
12306網(wǎng)站后端性能優(yōu)化技術(shù)分析
關(guān)于后端性能優(yōu)化技術(shù),陳皓在其博客中表示,可通過(guò)數(shù)據(jù)冗余、數(shù)據(jù)鏡像、數(shù)據(jù)分區(qū)以及后端的動(dòng)態(tài)負(fù)載均衡來(lái)達(dá)到提高訪問(wèn)速度的目的。
數(shù)據(jù)冗余就是將數(shù)據(jù)庫(kù)的數(shù)據(jù)冗余處理,也就是減少表連接這樣的開(kāi)銷比較大的操作,但這樣會(huì)犧牲數(shù)據(jù)的一致性。但這樣做的風(fēng)險(xiǎn)較大,并且現(xiàn)在常用的方法就是利用NoSQL來(lái)做數(shù)據(jù),數(shù)據(jù)冗余了,訪問(wèn)加快了,但是數(shù)據(jù)一致性就會(huì)存在較大的問(wèn)題。
利用后端優(yōu)化來(lái)提高訪問(wèn)速度的第二個(gè)方法則是數(shù)據(jù)鏡像,現(xiàn)在幾乎所有的主流數(shù)據(jù)庫(kù)都支持鏡像。鏡像的好處就是可以做負(fù)載均衡。把一臺(tái)數(shù)據(jù)庫(kù)的負(fù)載均 分到多臺(tái)上,同時(shí)又保證了數(shù)據(jù)一致性(Oracle的SCN)。最重要的是,這樣還可以有高可用性,一臺(tái)廢了,還有另一臺(tái)在服務(wù)。但數(shù)據(jù)鏡像后的數(shù)據(jù)一致 性仍然是一個(gè)復(fù)雜的問(wèn)題,因?yàn)橐獙?duì)單條數(shù)據(jù)進(jìn)行分區(qū),將其均分到不同的服務(wù)器上。
數(shù)據(jù)鏡像不能解決的一個(gè)問(wèn)題就是數(shù)據(jù)表里的記錄太多,導(dǎo)致數(shù)據(jù)庫(kù)操作太慢。所以,把數(shù)據(jù)分區(qū)。數(shù)據(jù)分區(qū)有很多種做法,一般來(lái)說(shuō),數(shù)據(jù)分區(qū)包含以下幾 種主要的方式:把數(shù)據(jù)把某種邏輯來(lái)分類、把數(shù)據(jù)按字段分,也就是豎著分表、平均分表或者同一數(shù)據(jù)分表等。
數(shù)據(jù)分區(qū)可以在一定程度上減輕負(fù)載,但是無(wú)法減輕熱銷商品的負(fù)載,對(duì)于火車票來(lái)說(shuō),可以認(rèn)為是大城市的某些主干線上的車票。這就需要使用數(shù)據(jù)鏡像來(lái) 減輕負(fù)載。使用數(shù)據(jù)鏡像,你必然要使用負(fù)載均衡,在后端,我們可能很難使用像路由器上的負(fù)載均衡器,因?yàn)槟鞘蔷饬髁康,因(yàn)榱髁坎⒉淮矸⻊?wù)器的繁忙程 度。因此,我們需要一個(gè)任務(wù)分配系統(tǒng),其還能監(jiān)控各個(gè)服務(wù)器的負(fù)載情況。當(dāng)然服務(wù)器負(fù)載均衡的技術(shù)有很多,每種方法都有各自的優(yōu)缺點(diǎn),這個(gè)可能要根據(jù)實(shí)際 情況進(jìn)行選擇。
公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語(yǔ) | DOIT歷程 | 誠(chéng)聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.