秒殺系統之因此難作,是由於在極短的時間內涌入大量的請求,來同時訪問有限的服務資源,從而形成系統負載壓力大,甚至致使系統服務癱瘓以及宕機的可能。本文會介紹秒殺系統中存在的痛點以及針對這些點的優化思路。web
如:12306的春節搶票、各大電商搞的定時搶購活動,如小米手機的在線搶購等,搶過火車票的同窗都知道在放票的那一瞬間可能1s都不到,票就被搶購一空了。面試
(1)儘可能將請求攔截在上游數據庫
對於秒殺系統來講,系統的瓶頸通常在數據庫層,因爲資源是有限的,如庫中共1萬張票,一瞬間併發進來100萬的請求,那麼有99萬都是無用的請求,因此爲了更好的保護底層有限的數據庫資源,儘可能將請求攔截在上游。後端
(2)充分利用緩存緩存
緩存不但極大的縮短了數據的訪問效率,更重要的是承載了底層數據庫的訪問壓力,因此對於讀多寫少的業務場景充分利用好緩存安全
(3)熱點隔離session
業務隔離:如12306的分時段售票,將熱點數據分散處理,來下降系統負載壓力架構
系統隔離:實現系統的軟硬隔離,不光是實現軟件的隔離,還能夠實現硬件的隔離,盡最大限度的減小秒殺帶來的高併發安全性問題。併發
數據隔離:啓用單獨的cache集羣或數據庫來存放熱點數據異步
(1)頁面端優化,如:
(2)web server層優化,如:
(3)後端service服務層優化
注:庫存信息放入Redis緩存的時候最好分爲多份放入不一樣key的緩存中,如庫存爲10萬能夠分爲10份分別放入不一樣key的緩存中,這樣將數據分散操做能夠達到更高的讀寫性能。
(4)DB層優化