秒殺時代:從綿羊變群狼

如同自然界的物種演化,從單細胞衍變到類目繁多的生物體系,網站的演變亦是如此。如今互聯網巨頭們也曾是從一臺放置車庫或客廳的服務器開始發展。谷歌、淘寶、臉書莫不如是。

它們的發展過程始終離不開一句話——物競天擇適者生存。適應環境的生物生生不息,符合用戶需求的網站野蠻生長。今天我們來研究一種特別的需求下的產物:秒殺系統。

何為秒殺

秒殺最初是格斗游戲中的用語,逐漸發展引申至商家的促銷手段。隨網購的普及,如今雙十一促銷、12306搶票、新款手機的限量發售都存在著秒殺活動。秒殺本質上是一把點燃人們欲望的篝火。

然而,秒殺同時也伴隨著對服務器的巨大壓力,一時間蜂擁而至的數據會造成服務器的宕機,給用戶不良的體驗。例如2011年末京東圖書曾做的“京東圖書瘋搶三小時”活動,瞬間暴漲的流量導致服務器負載過重,響應速度變慢。

而在 2016 年雙十一,支付寶支付峰值達12萬筆/秒;京東用29秒突破2010年雙十一全天下單量的紀錄;蘇寧全渠道銷售訂單量同比增長193%。目前大型電商已經解決高峰期間的 IT 壓力,構建了全民秒殺的局面。

秒殺背后的設計

秒殺,這樣一個市場需求下承載著無數架構師、開發人員的心血。筆者稍稍探究了一下,發現里面涉及到的內容非常多。鑒于篇幅所限,在這里我簡單的列舉幾點,分享秒殺背后有哪些精心設計。

1)Button 點亮的一瞬間

為了減輕服務器端壓力,購買頁面被設計為靜態頁面,緩存在 CDN,反向代理服務器上,而這個靜態頁面中加入了一個 JS 文件引用。當秒殺開始時一個定時任務服務器生成并發送一個新的 JS 文件到 JS 服務器上,并被用戶的瀏覽器加載,從而讓按鈕亮了起來。

2)最大并發量

一個系統的 QPS(Query Per Second,每秒處理請求數)并不是隨著服務器的數量成倍增長的。在高并發的狀態下,業務請求的平均響應時間一定會增加。因此我們必須要知道系統所能承受的最大并發量,來設置 Apache 的最大連接數。

這個數字一定不是越多越好,而是根據 CPU,內存等硬件因素綜合考慮得出的。可以通過 Apache Bench 來測試一下,取一個適當的值。

3)攻防之戰

秒殺大促的手段一出,市場上就出現了“刷票工具”、“秒殺器”等工具來幫助某些用戶發送盡可能多的請求到服務器,來達到提高秒殺成功概率的目的。但是有進攻就有防守,我們可以通過提高參拍者的門檻(如實名認證)、復雜度較高的驗證碼、數據挖掘以過濾黑號等手段來盡量屏蔽刷單行為,讓秒殺變得盡可能公平。

4)用戶體驗

真實環境上一切都有可能發生,誰都不能保證在那一刻系統一定不會出問題。所以從用戶體驗的角度來講,系統即使發生了問題,也應該讓用戶看到一個正常的返回頁面(如秒殺結束頁面),而不是直接返回錯誤。

5)人工智能

如今,人工智能運用在各種各樣的領域中,如:無人駕駛、語音識別、RoboAdvisor(智能投資顧問)、AlphaGo 等。作為互聯網電商的京東在最近一次的雙十一中就引入了新技術:ForceBot 軍演機器人。它能模擬真實的用戶進行搜索、加購物車、下單等一系列操作,通過機器人發起大流量進行全鏈路的壓測。

文末小結

秒殺,能讓食草的綿羊變成了食肉的群狼,能讓擰不開瓶蓋的女生秒變徒手撕快遞的女漢子。

也許隨著技術時代的飛速發展,秒殺系統很快就會被其它新生事物所取代,被人們所淡忘,但電商秒殺背后的技術將被積累下來。我們也翹首以待不斷更迭發展的技術能帶來人們更多的驚喜!

本文作者:王艷(點融黑幫),現就職于點融網工程部 Fincore 團隊,不理財的麻麻不是一個好程序媛。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容