人(rén)
已閱讀
已閱讀
電商類APP開發如何做(zuò)好秒殺活動
來(lái)源:lexintech.com 發布時(shí)間:2019-05-17
秒殺活動在電商類的(de)APP開發中很常見,秒殺功能不同于其他(tā)功能,它對(duì)于系統的(de)性能要求非常高(gāo)。例如:小米手機每周二的(de)秒殺,可(kě)能手機隻有1萬部,但瞬時(shí)進入的(de)流量可(kě)能是幾百幾千萬。又例如:12306搶票(piào),票(piào)是有限的(de),庫存一份,瞬時(shí)流量非常多(duō),都讀相同的(de)庫存。讀寫沖突,鎖非常嚴重,這(zhè)是秒殺業務難的(de)地方。那我們怎麽優化(huà)秒殺業務的(de)架構呢(ne)?
優化(huà)方向有兩個(gè):
(1)将請求盡量攔截在系統上遊(不要讓鎖沖突落到數據庫上去)。傳統秒殺系統之所以挂,請求都壓倒了(le)後端數據層,數據讀寫鎖沖突嚴重,并發高(gāo)響應慢(màn),幾乎所有請求都超時(shí),流量雖大(dà),下(xià)單成功的(de)有效流量甚小。以12306爲例,一趟火車其實隻有2000張票(piào),200w個(gè)人(rén)來(lái)買,基本沒有人(rén)能買成功,請求有效率爲0。
(2)充分(fēn)利用(yòng)緩存,秒殺買票(piào),這(zhè)是一個(gè)典型的(de)讀多(duō)些少的(de)應用(yòng)場(chǎng)景,大(dà)部分(fēn)請求是車次查詢,票(piào)查詢,下(xià)單和(hé)支付才是寫請求。一趟火車其實隻有2000張票(piào),200w個(gè)人(rén)來(lái)買,最多(duō)2000個(gè)人(rén)下(xià)單成功,其他(tā)人(rén)都是查詢庫存,寫比例隻有0.1%,讀比例占99.9%,非常适合使用(yòng)緩存來(lái)優化(huà)。好,後續講講怎麽個(gè)“将請求盡量攔截在系統上遊”法,以及怎麽個(gè)“緩存”法,講講細節。
常見的(de)站點架構基本是這(zhè)樣的(de):
(1)浏覽器端,最上層,會執行到一些JS代碼
(2)站點層,這(zhè)一層會訪問後端數據,拼html頁面返回給浏覽器
(3)服務層,向上遊屏蔽底層數據細節,提供數據訪問
(4)數據層,最終的(de)庫存是存在這(zhè)裏的(de),mysql是一個(gè)典型(當然還(hái)有會緩存)
再次重複下(xià)APP開發中常見的(de)秒殺系統的(de)兩個(gè)架構優化(huà)思路:
(1)盡量将請求攔截在系統上遊(越上遊越好);
(2)讀多(duō)寫少的(de)常用(yòng)多(duō)使用(yòng)緩存(緩存抗讀壓力);
浏覽器和(hé)APP:做(zuò)限速
站點層:按照(zhào)uid做(zuò)限速,做(zuò)頁面緩存
服務層:按照(zhào)業務做(zuò)寫請求隊列控制流量,做(zuò)數據緩存
數據層:閑庭信步
最後:結合業務做(zuò)優化(huà)
(1)盡量将請求攔截在系統上遊(越上遊越好);
(2)讀多(duō)寫少的(de)常用(yòng)多(duō)使用(yòng)緩存(緩存抗讀壓力);
浏覽器和(hé)APP:做(zuò)限速
站點層:按照(zhào)uid做(zuò)限速,做(zuò)頁面緩存
服務層:按照(zhào)業務做(zuò)寫請求隊列控制流量,做(zuò)數據緩存
數據層:閑庭信步
最後:結合業務做(zuò)優化(huà)