asp.net高並發網站解決方案【未完成版本】


場景:假設現在是一個電商網站,今天要舉辦活動,有10個商品低價銷售,但是會來搶購的人會特別多,最后只有十個人可以成功的買到商品
 
明確2個問題
1.訪問量:搶票時間斷用戶訪問量
2.並發:1秒內請求量
 
技術點:
1、前台頁面
     1.1、gzip壓縮文件 (參考網址:http://www.cnblogs.com/KevinYang/archive/2010/06/02/1749675.html)
     1.2、請求搶票提交增加驗證碼
2、消息隊列:RabbitMq(用戶的請求到達了搶單接口,我們只向隊列中丟一條數據后就立即返回)
3、緩存層 :
3.1、首先我們需要針對 IO密集型異步化操作,搶單的頁面不只是有搶單按鈕,還有商品的介紹,圖片,文字描述等。對於這些數據我們要進行 緩存(建立對應的機制:增刪改),一萬個用戶一萬次請求都從數據庫中取數據與只取一次剩下9999次從緩存中取效率自然是不一樣的
3.2、會有同一個用戶多次進行請求的情況,如果像之前的邏輯,前10條信息有二條是屬於一個人的呢,(這里假設每個人只可以購買一次)我們就需要進行判斷了,同一個賬戶發送的多次請求,我們只認為第一次請求是有效的,剩下的都請都直接返回。因為是並發,我們又怎么做到第一次請求有效呢?這時我們可以使用 Redis incr存儲用戶的標識,Redis是單線程的,不存在並發的問題。incr返回為1那么是第一次請求,為N則是第N請求那么它就是無效的
 
4、代碼層
  • 服務層(webapi\wcf等技術)
5、數據庫層
  • 分布數據(未知)
  • 讀寫分離(數據庫復制技術發布訂閱方式:主數據庫寫操作從數據庫查詢)-未解決
  • 表數據拆分
       水平拆分(表分區-已解決)
       垂直拆分(單表按照業務功能拆分字段為多表按,比如A表有a、b、c、d、e、f字段 a、b、c是業務A常用的操作字段d、e、f是業務B常用的操作字段)-未解決
  • 數據庫緩存(Redis)-未解決

參考文章:Net高並發解決思路(附源碼)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM