摘要:即使秒殺系統崩潰了,也不會對網站造成影響。動態生成隨機下單頁面的為了避免用戶直接訪問下單需要將動態化,用隨機數作為參數,只能秒殺開始的時候才生成。架構設計如何控制秒殺商品頁面搶購按鈕的可用禁用。該文件不被緩存的做法隨機數。
秒殺背景
電商中為了吸引顧客、聚集人氣,經常會策劃一些秒殺活動。活動中售賣的商品,要么價格遠低于市場價格,要么比較稀缺(如一些新發布的商品)。這些商品電商一般都會限量、限時銷售。無疑這些商品對消費者的誘惑力是巨大的,消費者蜂擁而來,往往幾秒鐘就可以將商品搶購一空。而對于電商系統來說可能更多的是考驗。
秒殺痛點首先,秒殺的場景決定了秒殺是一場速度的比拼,也就是俗話說的“手快有、手慢無”。大家都爭著在活動開始后,第一時間將商品搶到,完成下單。因此秒殺活動開始的一瞬間會有大量的流量涌入,幾倍、甚至于十幾倍的流量對系統的沖擊不可謂不大。如果系統沒有足夠的capacity或應對措施,很可能就被瞬時高流量給壓垮了。
其次,突如其來的高流量,給系統各個模塊都來了一連串的壓力,系統可能會因此變慢,而且可能會彼此影響,影響可用性。比如:數據庫更新同一個商品庫存,需對同一行記錄加鎖,隨著并發的壓力逐漸增大,數據庫更新的性能是逐漸下降的。從而引起提供庫存service的應用服務性能下降,連鎖的影響到下單service的性能,最終反饋到消費者的可能就是整個網站購物流程性能差、響應慢。而面對響應慢的系統,很多消費者可能采取反復刷新,多次嘗試,這無疑又增大了對系統的壓力。
還有,上述種種給消費者帶來的往往是體驗上的痛苦。如:網站響應慢,點擊搶購按鈕沒反應。好不容易可以操作了,卻發現秒殺活動已經結束,消費者的參與感比較差。久而久之,可能就對此類活動失去了興趣。
設計理念分層限流:將壓力盡量集中在前端,減少數據庫、服務器的壓力
異步處理:異步處理防止阻塞。
可用性:高可用雙活。
用戶體驗:隱藏購買地址。
分離:主站分離。
秒殺是一個網站營銷的一個附加活動,時間短,并發量大。
如果和網站原有應用部署在一起,必然會對現有業務造成沖擊,稍有不慎可能導致整個網站癱瘓。
高并發下對服務器數據庫造成的極大負載壓力。用戶秒殺開始前,通過不斷刷新瀏覽器來保證不會錯過秒殺活動。
頻繁的訪問程序、數據庫會對應用服務器和數據庫服務器造成負載壓力。
網絡帶寬的問題比超過平時好多倍。如果秒殺頁面的大小為200K,如果最大并發數為10000次,那么需要的網絡和服務器帶寬是2G(200K×10000)。
這些網絡帶寬是因為秒殺活動新增的,超過網站平時使用的帶寬。
避免直接下單。秒殺的游戲規則是到了秒殺才能開始對商品下單購買,在此時間點之前,只能瀏覽信息不可下單。
而下單頁面也是一個普通的URL,如果得到這個URL,不用等到秒殺開始就可以下單了。
應對策略 秒殺系統獨立部署為了避免短時間內的大訪問量對現有網站業務造成的沖擊,可以將秒殺系統獨立部署。
如果需要還可以使用獨立域名,使其與網站完全隔離。
即使秒殺系統崩潰了,也不會對網站造成影響。
秒殺商品頁面靜態化將商品描述、參數、詳情,全部寫到一個靜態頁面,不用進行程序的邏輯處理,不需訪問數據庫。
不用部署動態的服務器和數據庫服務器。 租借秒殺活動的網絡帶寬因為秒殺新增的網絡帶寬,必須和運營商重新購買或租借帶寬。
為了減輕服務器的壓力,需要將秒殺商品頁面緩存在CDN,同樣CDN服務器也需要臨時租借帶寬。
動態生成隨機下單頁面的URL為了避免用戶直接訪問下單URL,需要將URL動態化,用隨機數作為參數,只能秒殺開始的時候才生成。
架構設計 如何控制秒殺商品頁面搶購按鈕的可用/禁用。購買按鈕只有在秒殺開始的時候才能點亮,在此之前是灰色的,顯示活動未開始。
如果頁面是動態生成的,每次刷新都要請求服務器,那么勢必造成服務端的負載壓力。
如果頁面是靜態頁面的話,可以將頁面緩存在CDN,反向代理服務器上,甚至用戶瀏覽器上。
但是這樣,秒殺開始時,用戶刷新頁面,根本請求不到應用服務器。
解決方案:使用JS腳本控制,在頁面中引用一個JS文件(文件極小),但是該文件不要被緩存。
該JS的作用是,包含秒殺開始標志,修改樣式,生成下單頁面的URL及隨機參數。
該JS文件不被緩存的做法:xxx.js?v=隨機數。
會有一臺服務器進行監控(定時上下架):
當秒殺活動開始時推送該文件。
當秒殺活動結束時推送文件,標示結束標志,修改樣式。
詳情:2018-01-27 20:00 實戰構建PHP千萬級PV秒殺系統 講堂文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61928.html
摘要:即使秒殺系統崩潰了,也不會對網站造成影響。動態生成隨機下單頁面的為了避免用戶直接訪問下單需要將動態化,用隨機數作為參數,只能秒殺開始的時候才生成。架構設計如何控制秒殺商品頁面搶購按鈕的可用禁用。該文件不被緩存的做法隨機數。 秒殺背景 電商中為了吸引顧客、聚集人氣,經常會策劃一些秒殺活動。活動中售賣的商品,要么價格遠低于市場價格,要么比較稀缺(如一些新發布的商品)。這些商品電商一般都會限...
摘要:即使秒殺系統崩潰了,也不會對網站造成影響。動態生成隨機下單頁面的為了避免用戶直接訪問下單需要將動態化,用隨機數作為參數,只能秒殺開始的時候才生成。架構設計如何控制秒殺商品頁面搶購按鈕的可用禁用。該文件不被緩存的做法隨機數。 秒殺背景 電商中為了吸引顧客、聚集人氣,經常會策劃一些秒殺活動。活動中售賣的商品,要么價格遠低于市場價格,要么比較稀缺(如一些新發布的商品)。這些商品電商一般都會限...
摘要:真正要做高性能的系統,不僅需要在數據結構與算法層面深入,更要從硬件操作系統文件系統底層原理等多個領域做更多的研究例如阿里云自研的系統使用了裸盤技術。 《CDN之我見》共由三個篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 CDN 專業術語,想深入了解和感受 CDN 究竟是什么的同學。本次由白金老師繼續為大家分享《CDN之我見》系列二,主要講解緩存是什么、工...
摘要:真正要做高性能的系統,不僅需要在數據結構與算法層面深入,更要從硬件操作系統文件系統底層原理等多個領域做更多的研究例如阿里云自研的系統使用了裸盤技術。 《CDN之我見》共由三個篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 CDN 專業術語,想深入了解和感受 CDN 究竟是什么的同學。本次由白金老師繼續為大家分享《CDN之我見》系列二,主要講解緩存是什么、工...
閱讀 623·2023-04-26 01:53
閱讀 2748·2021-11-17 17:00
閱讀 2879·2021-09-04 16:40
閱讀 1983·2021-09-02 15:41
閱讀 830·2019-08-26 11:34
閱讀 1222·2019-08-26 10:16
閱讀 1334·2019-08-23 17:51
閱讀 814·2019-08-23 16:50