2012年春節,為了讓每個歸家的人都能更方便地購買到火車票,鐵道部首次實行了12306網上實名訂票制,據統計,在12306開通的7天,12306網站訪問用戶已占全球互聯網用戶的0.902%,每天點擊量高達10億人次。但是面對購票者訪問量如潮水般涌入,12306訂票系統明顯有些招架不住,系統一再陷入崩潰。
其實,面對上億的高并發訪問量,網站背后架構所面臨的技術挑戰可想而知,首次試水的12306訂票系統的表現如此脆弱也是在情理之中。由12306網站也引發了一些對構建高并發高訪問量的網站架構的討論,對此,IT168采訪了某上市互聯網公司網絡部經理Eric,他解答了12306網站面臨的一些挑戰,并對高并發高訪問網站的構建給出了自己的建議。
一.作為一個訪問量如此高的網站,12306訂票系統設計存在哪些挑戰?
12306訂票系統的構建肯定不只一家供應商來完成,各個不同供應商來實現各自的功能,最后將各個部分功能拼湊起來,實現整體的功能,這其中需要注意功能銜接上的問題。此外,12306網站的上線,在邏輯設計上,需要充分考慮到訪問高峰訪問量的壓力,并對性能代碼、UI等進行一些優化。
二.淘寶、京東等電商同樣也出現過系統崩潰的現象,12306系統的癱瘓和此類電商的癱瘓有何異同?
一般而言,網站不能訪問,問題可能是出于兩方面:一方面,可能是系統的核心基礎架構方面,核心數據層無法應對負載的壓力;另一方面,可能是前端的web服務器在技術和容量預估上做的不足,比如之前只做了應對千萬人訪問的容量,而實際訪問量卻達到了上億。此外在很多電商后臺的數據庫環境中,除了Linux環境,也有windows環境,這種異構的環境的系統穩定性要比完全的Linux系統的穩定性要遜色一點,需要對系統和代碼進行優化。
三.對于構建此類高并發高訪問的網站,在架構設計和技術方面應該注意哪些環節?
設計這類高并發高訪問的網站系統,最主要的原則是要快,其中有3個環節值得重視:1.性能測試要充足,2.對用戶訪問量的評估要盡量精準,并提前做好應對的準備,3.對應用軟件和系統優化,任何一步不合理的軟件和系統步驟,被如此大的訪問量跌價起來也會放大成嚴重的后果。
四.采用云計算平臺(類似于Amazon之類的)來搭建這類網站,能帶來怎樣的效果?
利用云計算平臺的確能起到提高資源利用率和節省成本的效果,但是云計算的價值還具有局限性,是否適用也要依照情況而定,對于小型的網站而言,投入的資金有限而且網站數據的敏感性不高,因此,采用云計算平臺比較合適。而對于大型的電商以及12306這種實名制的訂票系統來說,將核心的應用以及重要的數據放到云計算平臺上,對這類網站而言還不太現實,主要原因是數據安全性的考慮。
五.部署虛擬化對這類高并發高訪問網站的建設能起到哪些作用?
通過在物理服務器上部署虛擬機來更大限度的利用計算資源,其實虛擬化最大的作用體現在對計算資源的節省,在性能方面,虛擬化對系統的內存消耗比較大,因此,是否適合實施虛擬化也要分不同場景來判斷,對于實時數據分析提取較多的網絡動態架構而言,實施虛擬化時應慎重,因為實施虛擬化之后對系統應用程序資源、代碼效率也提出了更高的要求,否者實施虛擬化反而會降低數據分析的實時性;而對于以靜態頁面為主的網站而言,建議可以嘗試虛擬化。虛擬化的實施也具有一套規范的流程,第一步就是對整個系統進行評估,而在虛擬化軟件的選擇上也有商業虛擬化和開源虛擬化軟件之分。