高訪問量Web系統優化

[size=small]許令波/君山 detail靜態化
[url]https://github.com/xulingbo/xulingbo.github.io/issues/[/url]
許令波,2009年加入淘寶,目前負責商品詳情業務和穩定性相關工作,長期關注性能優化領域,參與了淘寶高訪問量Web系統主要的優化項目,著有《深入分析Java Web技術內幕》一書。個人網站[url]http://xulingbo.net[/url]

淘寶大秒系統設計詳解
[url]http://geek.csdn.net/news/detail/59847[/url]
要點
熱點隔離:業務隔離,系統隔離,數據隔離,這個是當秒殺系統跟其他系統共存時才考慮的,單純的討論秒殺系統好像不需要,但實際情況估計秒殺的會員,商品,優惠都是來自普通的系統,所以單純討論秒殺系統也不現實。

動靜分離,讓瀏覽器和CDN cache絕大部分靜態數據,這樣雖然併發請求個數仍然一樣多,但是請求的參數和返回值裏面的數據就很少了。
秒殺頁面提供一個“刷新”按鈕,讓用戶點擊這個“刷新”按鈕即可從秒殺等待狀態進入秒殺開始狀態,不需要用戶刷新瀏覽器或按F5來刷新頁面,這樣進一步減少請求數,用戶在秒殺開始的時間段內基本沒有大量請求“靜態”數據的請求了

基於時間分片削峯
即增加了秒殺答題,當然秒殺答題一個很重要的目的是爲了防止秒殺器。其實增加答題還有一個重要的功能,就是把峯值的下單請求給拉長了,從以前的1s之內延長到2~10s左右,請求峯值基於時間分片了,這個時間的分片對服務端處理併發非常重要,會減輕很大壓力,另外由於請求的先後,靠後的請求自然也沒有庫存了(這也是因爲有下面的數據分層校驗),也根本到不了最後的下單步驟,所以真正的併發寫就非常有限了。

數據分層校驗
把大量靜態不需要檢驗的數據放在離用戶最近的地方;在前端讀系統中檢驗一些基本信息,如用戶是否具有秒殺資格、商品狀態是否正常、用戶答題是否正確、秒殺是否已經結束等;在寫數據系統中再校驗一些如是否是非法請求,營銷等價物是否充足(淘金幣等),寫的數據一致性如檢查庫存是否還有等;最後在數據庫層保證數據最終準確性,如庫存不能減爲負數。

關鍵技術優化點
Java處理大並發動態請求優化
同一商品大併發讀問題
同一數據大併發更新問題


nginx
[url]http://tengine.taobao.org/documentation_cn.html[/url]
[/size]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章