更新時間:2019-02-13 10:23 來源:動力節點 瀏覽16504次
秒殺是互聯網應用常見的應用場景,比如淘寶雙十一、京東618,以及一些交易網站或應用在特定的時間舉行的搶購活動。由于商品的稀缺或者特價優惠,并且為限量銷售,導致大量用戶前來搶購,并且會在約定的秒殺開始時間點同時進行搶購,造成服務器巨大的訪問壓力,對于一個秒殺系統,需要有特殊的設計才可解決秒殺場景下的巨大流量洪峰以及數據的一致性問題。
秒殺系統場景的主要特點
秒殺時大量用戶會在同一時間同時進行搶購,網站瞬時訪問流量激增。
秒殺一般是訪問請求數量遠遠大于庫存數量,只有少部分用戶能夠秒殺成功。
秒殺架構設計理念
防刷設計:設計有效的防刷機制,有效攔截無效請求,避免用戶惡意調用秒殺相關接口。
數據分層校驗:盡可能在不同層將無效請求攔截并過濾掉,讓真正有效的請求落入后端服務。
限流: 鑒于只有少部分用戶能夠秒殺成功,所以要限制大部分流量,只允許少部分流量進入服務后端。
流量削峰:對于秒殺系統瞬時會有大量用戶涌入,所以在搶購一開始會有很高的瞬間流量峰值。高峰值流量是壓垮系統很重要的原因,所以如何把瞬間的高峰流量變成一段時間內的平穩流量是設計秒殺系統很重要的思路,實現削峰的常用的方法是利用緩存和消息中間件等技術。
超賣設計:庫存數量有限,如何有效控制商品超賣是秒殺系統不可避免的一個問題;
異步處理:秒殺系統是一個高并發系統,采用異步處理模式可以極大地提高系統并發量,當然異步處理也是削峰的一種實現方式。
內存緩存:秒殺系統最大的瓶頸一般都是數據庫讀寫,由于數據庫讀寫屬于磁盤IO,性能很低,如果能夠把部分數據或業務邏輯轉移到內存緩存,效率會有極大地提升。
動靜分離:將大量靜態資源進行CDN緩存,減少后端服務器的請求壓力。
主備容災:在有條件的情況下做好主備容災,提前預防被惡意攻擊;
可拓展:當然如果我們想支持更多用戶,更大的并發,最好將系統設計成彈性可拓展的,如果流量迅速增大,拓展機器即可。像淘寶、京東等雙十一活動時會增加大量服務器來應對流量洪峰。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習