[梁山好漢說IT] 梁山好漢和秒殺系統(tǒng)
0x00 摘要
今天看了一篇好文章,里面一些思路頗值得借鑒。先摘錄總結精華。然后看看梁山好漢如何處理秒殺系統(tǒng)(系統(tǒng)隔離/系統(tǒng)搭建/風控過濾/削峰/信號廣播......)。
0x01 IT背景知識
文章摘錄
1. 總體思路 --- 系統(tǒng)隔離
因為秒殺活動是有計劃的,并且在短時間內會爆發(fā)大量的請求。為了不影響現(xiàn)有的業(yè)務系統(tǒng)的正常運行,我們需要把它和現(xiàn)有的系統(tǒng)做隔離。即使秒殺活動出現(xiàn)問題也不會影響現(xiàn)有的系統(tǒng)。隔離的設計思路可以從三個維度來思考:業(yè)務隔離/技術隔離/數(shù)據(jù)庫隔離。
2. 值得借鑒的特色思路方法
“熱場”
在秒殺活動開始之前,可以設計一個“熱場”。“熱場”的形式多種多樣,例如:分享活動領優(yōu)惠券,領秒殺名額等等。“熱場”的形式不重要,重要的是通過它獲取一些準備信息。例如:有可能參與的用戶數(shù),他們的地域分布,他們感興趣的商品。為后面的技術架構提供數(shù)據(jù)支持。
風控過濾
為了避免惡意程序參與秒殺,在客戶端會設計一些問答或者滑塊的功能,減少此類機器人對服務器的壓力。 服務器也會過濾一些疑似機器人或者惡意請求。例如:從固定 IP 過來的,頻率過高的請求。
限流削峰
瞬時的海量請求好比請求的“高峰”,我們架構系統(tǒng)的目的就是“削峰”。 需要使用服務集群和水平擴展,讓“高峰”請求分流到不同的服務器進行處理。同時,還會利用緩存和隊列技術減輕應用處理的壓力,通過異步請求的方式做到最終一致性。由于是多線程操作,而且商品的額度有限,為了解決超賣的問題,需要考慮進程鎖的問題。
數(shù)據(jù)庫
秒殺活動持續(xù)時間短,瞬時數(shù)據(jù)量大。為了不影響現(xiàn)有數(shù)據(jù)庫的正常業(yè)務,可以建立新的庫或者表來處理。在秒殺結束以后,需要把這部分數(shù)據(jù)同步到主業(yè)務系統(tǒng)中,或者查詢表中。 我們在秒殺之前,需要通過業(yè)務的手段,例如:熱場活動,問卷調查,歷史數(shù)據(jù)分析。通過他們去估算這次秒殺可能需要存儲的數(shù)據(jù)量。
0x02 梁山好漢如何處理秒殺系統(tǒng)(呼延灼三千連環(huán)甲馬)
我看到秒殺這個概念,第一時間就想到了"呼延灼三千連環(huán)甲馬"。這古今兩個系統(tǒng)的特點非常相似。
-
秒殺特點:秒殺時大量用戶會在同一時間,搶購同一商品,網(wǎng)站瞬時流量激增。
-
三千連環(huán)馬特點:“每一隊三十匹馬,一齊跑發(fā),不容你不向前走。那連環(huán)馬軍,漫山遍野,橫沖直撞將來”。
梁山的秒殺系統(tǒng)實現(xiàn)得非常好,很多手法暗合我們如今的處理機制。
1. 熱場
"前面五隊軍馬望見,便亂跑了,策立不定;后面大隊人馬,攔當不住,各自逃生。就水寨里整點人馬,折其大半,卻喜眾頭領都全;雖然折了些馬匹,都救得性命。" 。
2. 系統(tǒng)隔離
梁山專門打造了秒殺系統(tǒng)來對付連環(huán)馬,這個是專門秒殺系統(tǒng),不是梁山常規(guī)戰(zhàn)斗序列。
"每十個會使鉤鐮槍的,間著十個撓鉤手,但見馬到,一攪鉤翻,便把撓鉤搭將入去捉了"。
3. 系統(tǒng)搭建
梁山專門從硅谷招聘了世界頂尖技術高手徐寧攜帶技術入股。
"當下徐寧選軍已罷,便下聚義廳來,拿起一把鉤鐮槍,自使一回。眾人見了喝采" "眾軍漢見了徐寧使鉤鐮槍,都喜歡。就當日為始,將選揀精銳壯健之人,曉夜習學。又教步軍藏林伏草,鉤蹄拽腿,下面三路暗法。不到半月之間,教成山寨五七百人"
4. 風控過濾
梁山為了防止連環(huán)馬在秒殺活動未開始時候惡意侵入,進行了風控過濾,打造了防御系統(tǒng)。
"山寨中只教水軍頭領牢守各處灘頭,水底釘了暗樁。呼延灼雖是在山西山北兩路出哨,決不能夠到山寨邊"
5. 削峰
梁山也有削峰操作,分別是"分流削峰"/"限流削峰"
"今將步軍下山,分作十隊誘敵"
這就是"分流削峰,服務集群和水平擴展,讓“高峰”請求分流到不同的服務器進行處理"
"但見軍馬沖掩將來,都望蘆葦荊棘林中亂走。平川窄路,也如此埋伏。"
這就是"限流削峰",而且連環(huán)馬面對"蘆葦/荊棘林/窄路",只能在這種地形前面排隊依次通過,這不就相當于用隊列進行削峰嘛。
6. 居然還有信號廣播,協(xié)調整體系統(tǒng)
"說猶未了,只聽得北邊一聲炮響。呼延灼罵道:“這炮必是凌振從賊,教他施放" "正欲分兵之際,只見西邊又是四隊人馬起來,呼延灼心慌;又聽的正北上連珠炮響,一帶直接到土坡上"
0x03 參考
這一次,徹底弄懂“秒殺系統(tǒng)”
浙公網(wǎng)安備 33010602011771號