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