極客時間出品的《如何設計一個秒殺系統》由許令波所作,許令波是前阿里巴巴高階技術專家。本專欄希望帶你透徹理解秒殺系統的各個關鍵技術點,希望你在學完之後,能夠快速搭建一套滿足自己業務場景的高可用秒殺系統。而更多的是,我們希望藉助“秒殺”這個網際網路高併發場景中的典型代表,帶你瞭解如何打造一個超大流量併發讀寫、高效能,以及高可用的系統架構。
《如何設計一個秒殺系統》講師介紹
許令波,花名“君山”,2009年加入淘寶,一直關注效能最佳化領域,經歷了淘寶PV從1億到50億的發展歷程,參與了淘寶高訪問量Web系統模板引擎的改造、靜態化、無線化、CDN等最佳化改造專案。任職期間,他一直參與淘寶高訪問量的系統頁面詳情繫統的最佳化工作,設計並實現了sketch模板引擎將服務端效能提升近30%左右。
“秒殺”,就是在同一個時刻有大量請求爭搶購買同一個商品,並完成交易的過程,其間涉及大量的併發讀和併發寫,並要求高可靠和高效能的系統支援。
也因此,“秒殺”對於程式設計師來講也意味著巨大的挑戰。如何讓系統面對百萬級的請求流量不出故障?如何保證高併發情況下資料的一致性寫?如何在不堆伺服器的情況下應對是平時數百上千倍的併發訪問?如何分別針對大流量的讀寫請求進行服務端的極致最佳化?你都將在這個專欄裡找到答案。
《如何設計一個秒殺系統》專欄模組
本專欄共7期,分為三大模組。
高效能。秒殺涉及大量的併發讀和併發寫,因此支援高併發訪問這點非常關鍵。本專欄將從設計資料的動靜分離方案、熱點的發現與隔離、請求的削峰與分層過濾、服務端的極致最佳化這4個方面重點介紹。
一致性。秒殺中商品減庫存的實現方式同樣關鍵。可想而知,有限數量的商品在同一時刻被很多倍的請求同時來減庫存,減庫存又分為“拍下減庫存”“付款減庫存”以及預扣等幾種,在大併發更新的過程中都要保證資料的準確性,其難度可想而知。因此,我將用一篇文章來專門講解如何設計秒殺減庫存方案。
高可用。雖然我介紹了很多極致的最佳化思路,但現實中總難免出現一些我們考慮不到的情況,所以要保證系統的高可用和正確性,我們還要設計一個PlanB來兜底,以便在最壞情況發生時仍然能夠從容應對。專欄的最後,我將帶你思考可以從哪些環節來設計兜底方案。
《如何設計一個秒殺系統》課程目錄
開篇詞 | 秒殺系統架構設計都有哪些關鍵點?
01 | 設計秒殺系統時應該注意的5個架構原則
秒殺系統整體的架構設計思路
“4要1不要”原則
不同場景下的不同架構案例
02 | 如何才能做好動靜分離?有哪些方案可選?
什麼是靜態資料和動態資料
如何做動靜分享的改造
動靜分離的幾種架構方案
03 | 二八原則:有針對性地處理好系統的“熱點資料”
什麼是“熱點”:熱點操作的熱點資料
實現一個動態熱點的系統
思路:最佳化、限制、隔離
04 | 流量削峰這事應該怎麼做?
什麼是流量削峰
佇列緩衝、秒殺答題、分層過濾
具體的實現細節
05 | 影響效能的因素有哪些?又該如何提高系統的效能?
影響效能的因素
如何發現瓶頸
如何最佳化系統
06 | 秒殺系統“減庫存”設計的核心邏輯
常見的幾種減庫存方案
減庫存的最優實現方式
其中的坑以及關鍵最佳化點
07 | 準備Plan B:如何設計兜底方案?
如何才能保證系統的高可用
降級、限流、拒絕服務的核心邏輯
08 | 答疑解惑:快取失效的策略應該怎麼定?
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***