最近在閱讀許令波的極客專欄「如何設計一個秒殺系統」,話說立刻要到雙11了,秒殺系統的知識也能應用到裏面。程序員
許令波簡介:數據庫
許令波,花名「君山」。提及來個人職業生涯算是比較簡單,2009 年大學畢業後就進入了淘寶,一直工做了七年多。這七年多的時間裏,我有幸看到了淘寶業務的快速增加,而且以開發者的身份參與其中。
說實話,做爲一名程序員,個人技術能力也在公司業務的快速增加過程當中獲得了歷練,並積累了一些大流量高併發網站架構設計和優化的經驗,尤爲是針對「秒殺」這個場景。由於我確信,那個時候咱們確定是對系統作了足夠多的極致優化,才能扛住當時洪峯般的流量請求。架構
如何理解秒殺系統?併發
做爲程序員,從總體思考問題,主要解決兩個問題:
1.併發讀 核心:減小用戶到服務端讀數據,或讀更少的數據
2.併發寫 核心:處理原則也同樣,要求咱們在數據庫層面獨立一個庫,特殊處理,還要設計兜底方案,防止最壞狀況發生。
從架構師角度考慮: 如何打造並維護一個超大流量併發讀寫、高性能、高可用系統。
具體分爲三塊:
1.高性能 支持高併發訪問,主要四個方面來作優化
(1)數據庫的動靜分離方案 (2)熱點的發現與隔離 (3)請求的削峯與分層過濾 (4)服務端的極致優化
2.一致性 秒殺商品的減庫存,保證數據的一致性。有限的商品會在某一時刻被大量請求同時減庫存,而且減庫存的方案也有多種。
3.高可用 保證系統的高可用和肯定性,還要準備一個planB 高併發