當前位置:首頁 > 建站知識 >正文

高并發交易型網站設計四原則

發布時間:發布者:liuping 點擊數:1563

 

        2012年春節,鐵道部推出12306網站,進行網絡實名購票。每一個返鄉人原以為能買著一張回家的火車票,但結果還是大失所望。7天內,12306網站訪問用戶已占全球互聯網用戶的0.902%,每天點擊量高達10億人次;系統一度支撐不住如此龐大的訪問量而陷入崩潰。針對12306的責難也不絕于耳。
 
  對此,中國鐵路客戶服務中心透露,目前,鐵道部已啟動了新一代客票系統的規劃和設計。考慮采用云計算架構,對現有的客票系統進行全面的優化和改造。IT168企業計算群組特啟動“支招12306 大型高并發高性能網站架構經驗大家談”特別專題,針對大型高并發高性能網站架構廣泛征集意見,為12306網站提出優化建議,并對更多有需要構建大型高并發高性能網站的用戶提供參考。本期采訪的嘉賓葉萌,曾任天涯社區CIO,現在從事云計算相關的創業工作。
 
  在采訪中,葉萌表示,雖然大家對12306網站有所指責,但是站在純技術指標的角度,從公開的一些數據看,我個人覺得它做得還蠻不錯,應該給鐵道部一點鼓勵。他認為,12306網站歸根結底可以歸結為在線交易型網站,并談到了在線交易型網站在前端設計和后端設計方面的一些原則,在線交易型網站最大的難點就是要結合自己的業務特點,把這些設計原則融合到網站的設計中去。
 
  問題一:12306網站需求分析 與其他網站有何不同?
 
  葉萌:這種大型的服務網站,包括淘寶、京東等電商的網站,還有這類訂票的網站,服務的可用性以及響應的時間是剛性的需求,但是不同的網站由于業務不同會導致需求有所不同,同時還有網站的訪問壓力也同網站的需求有關,壓力包括用戶的訪問壓力以及業務流程的復雜度和要處理的數據量的壓力。
 
  京東、新浪、淘寶、12306等等這些大型的網站,需求方面最主要的區別就在于并發的訪問量、業務邏輯的不同、以及數據量的大小。
 
  問題二: 12306網站系統的設計存在的問題分析?
 
  葉萌:不管是京東也好,淘寶也好,還是12306也好,都可以歸結為一種在線交易系統。這種系統大致地可以分前端和后端兩大部分。后端再細分一點,可以分業務邏輯的部分和數據處理的部分。
 
  前端的設計要在滿足功能需求的前提之下做得比較輕,所謂輕就包括前端的格式和數據量,每下載一個頁面所需要的數據量以及打開同一個頁面上建立的http的連接數要盡可能地少。反之,如果網頁比較重的話,每下載一個網頁從服務器傳出來的東西就會比較多,當訪問量很大時,對系統的帶寬會有極大的挑戰。
 
  12306前端設計比較重,主要表現幾個方面:第一,把CSS的表和網頁混在一塊下載。第二,打開一個網頁需要建立的http連接數都很多。很多關鍵的網頁包括訂票的網頁、查詢的網頁,打開一個網頁需要建立的http連接數都很多,有人分析過打開一個網頁超過70個http連接數。每一臺服務器建立的http連接數是有一個上限,如果大家都去并發訪問的時候,服務器的連接數很快就不夠用了。
 
  在這里我想補充一點:多瀏覽器的兼容性問題。12306目前好象使只能使用IE瀏覽器,用google的Chrome的瀏覽就不能并發的用,所以這也是一個需要注意的問題。
 
  后端可以分成兩塊:一個是業務邏輯,一個是數據處理。
 
  從業務邏輯角度來講,火車票的查詢從A地到B地有多少趟車,這個查詢的邏輯比電商的要復雜。電商無非是到一個庫里看還有沒有貨,結果要么就是有要么就是沒有,不會有第三種。但是對于火車票來講,從A地到B地可能有多種選擇,可能有幾趟車可以選擇。
 
  這個比電商要復雜,因為它做的事要很多,計算就比較多,或者要做好幾個查詢,才能把信息匯總起來。如果涉及到關聯訂票的情況就更復雜了,但是目前12306還沒有實現關聯訂票。
 
  后端的還有一塊——數據處理方面。這個跟訂票有關系,訂票以后需要做一個事務,就是要從下單到完成訂票是一個完整的事務,這個事務和電商下單的時候有一定的相似性,直到付款這一步之前都跟電商就很像。這個部分的問題在哪里?12306采取的一個做法就是同步的響應,同步做法是大家比較喜歡的一種做法,就是下了單馬上能看到買到票沒有。但是同步的做法對系統的挑戰比較高,有很多電商的網站實際已經從業務邏輯的調整為一個異步,就是把訂票這個事務變成異步操作來完成。
 
  事務的處理有一個最大的挑戰是數據一致性的問題,就是一定要保證后端在任何一個時間點它是一致的,伸縮性不管是縱向擴展還是橫向擴展,尤其是橫向擴展比較難的地方就在于數據的一致性的問題。
 
单双中特 开奖日更新