秒杀活动的技术挑战
作者:李智慧
鏈接:https://www.zhihu.com/question/20496392/answer/17272255
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
1. 秒殺活動的技術挑戰
假設某網站秒殺活動只推出一件商品,預計會吸引1萬人參加活動,也就說最大并發請求數是10000,秒殺系統需要面對的技術挑戰有:
對現有網站業務造成沖擊
秒殺活動只是網站營銷的一個附加活動,這個活動具有時間短,并發訪問量大的特點,如果和網站原有應用部署在一起,必然會對現有業務造成沖擊,稍有不慎可能導致整個網站癱瘓。
高并發下的應用、數據庫負載
用戶在秒殺開始前,通過不停的刷新瀏覽器頁面以保證不會錯過秒殺,這些請求如果按照一般的網站應用架構,訪問應用服務器、連接數據庫,會對應用服務器、數據庫服務器造成極大的負載壓力。
突然增加的網絡及服務器帶寬
假設商品頁面大小200K(主要是商品圖片大小),那么需要的網絡和服務器帶寬是2G(200K×10,000),這些網絡帶寬是因為秒殺活動新增的,超過網站平時使用的帶寬。
直接下單
秒殺的游戲規則是到了秒殺時間才能開始對商品下單購買,在此時間點之前,只能瀏覽商品信息,不能下單。而下單頁面也是一個普通的URL,如果得到這個URL,不用等到秒殺開始就可以下單了。
2. 秒殺系統的應對策略
為了應對上述挑戰,秒殺系統的策略有:
秒殺系統獨立部署
為了避免因為秒殺活動的高并發訪問而拖垮整個網站,使整個網站不必面對蜂擁而來的用戶訪問,將秒殺系統獨立部署,如果需要,還可以使用獨立的域名,以和網站完全隔離,即使秒殺系統崩潰了,也不會對網站造成任何影響。
秒殺商品頁面靜態化
秒殺商品頁面重新設計,不使用網站原來的商品詳情頁面,頁面內容靜態化:商品描述,商品參數,成交記錄,用戶評價全部寫入一個靜態頁面,用戶請求不需要經過應用服務器的業務邏輯處理,也不需要訪問數據庫。所以秒殺商品服務不需要部署動態的Web服務器、數據庫服務器。
租借秒殺活動網絡帶寬
對于因為秒殺新增的網絡帶寬,必須和運營商重新購買或者租借。為了減輕網站服務器的壓力,需要將秒殺商品頁面緩存在CDN,同樣需要和CDN服務商臨時租借新增的出口帶寬。
動態生成隨機下單頁面URL
為了避免用戶直接訪問下單頁面URL,需要將該URL動態化,即使秒殺系統的開發者也無法在秒殺開始前訪問下單頁面的URL。辦法是在下單頁面URL加入由服務器端生成的隨機數作為參數,在秒殺開始的時候才能得到。
鏈接:https://www.zhihu.com/question/20496392/answer/17272255
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
1. 秒殺活動的技術挑戰
假設某網站秒殺活動只推出一件商品,預計會吸引1萬人參加活動,也就說最大并發請求數是10000,秒殺系統需要面對的技術挑戰有:
對現有網站業務造成沖擊
秒殺活動只是網站營銷的一個附加活動,這個活動具有時間短,并發訪問量大的特點,如果和網站原有應用部署在一起,必然會對現有業務造成沖擊,稍有不慎可能導致整個網站癱瘓。
高并發下的應用、數據庫負載
用戶在秒殺開始前,通過不停的刷新瀏覽器頁面以保證不會錯過秒殺,這些請求如果按照一般的網站應用架構,訪問應用服務器、連接數據庫,會對應用服務器、數據庫服務器造成極大的負載壓力。
突然增加的網絡及服務器帶寬
假設商品頁面大小200K(主要是商品圖片大小),那么需要的網絡和服務器帶寬是2G(200K×10,000),這些網絡帶寬是因為秒殺活動新增的,超過網站平時使用的帶寬。
直接下單
秒殺的游戲規則是到了秒殺時間才能開始對商品下單購買,在此時間點之前,只能瀏覽商品信息,不能下單。而下單頁面也是一個普通的URL,如果得到這個URL,不用等到秒殺開始就可以下單了。
2. 秒殺系統的應對策略
為了應對上述挑戰,秒殺系統的策略有:
秒殺系統獨立部署
為了避免因為秒殺活動的高并發訪問而拖垮整個網站,使整個網站不必面對蜂擁而來的用戶訪問,將秒殺系統獨立部署,如果需要,還可以使用獨立的域名,以和網站完全隔離,即使秒殺系統崩潰了,也不會對網站造成任何影響。
秒殺商品頁面靜態化
秒殺商品頁面重新設計,不使用網站原來的商品詳情頁面,頁面內容靜態化:商品描述,商品參數,成交記錄,用戶評價全部寫入一個靜態頁面,用戶請求不需要經過應用服務器的業務邏輯處理,也不需要訪問數據庫。所以秒殺商品服務不需要部署動態的Web服務器、數據庫服務器。
租借秒殺活動網絡帶寬
對于因為秒殺新增的網絡帶寬,必須和運營商重新購買或者租借。為了減輕網站服務器的壓力,需要將秒殺商品頁面緩存在CDN,同樣需要和CDN服務商臨時租借新增的出口帶寬。
動態生成隨機下單頁面URL
為了避免用戶直接訪問下單頁面URL,需要將該URL動態化,即使秒殺系統的開發者也無法在秒殺開始前訪問下單頁面的URL。辦法是在下單頁面URL加入由服務器端生成的隨機數作為參數,在秒殺開始的時候才能得到。
轉載于:https://www.cnblogs.com/java-ssl-xy/p/8459609.html
總結
- 上一篇: 基金买入净值按哪个时点算 主要看提交的
- 下一篇: 51Nod1556 计算