做者:李智慧
連接: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加入由服務器端生成的隨機數做爲參數,在秒殺開始的時候才能獲得。