“秒殺”求生?網(wǎng)站運(yùn)維如何挑戰(zhàn)尖峰時(shí)刻!
文:吳冠輝 2020-05-11
發(fā)布時(shí)間: 2020-05-08 15:38:00
網(wǎng)站運(yùn)維 網(wǎng)購 動(dòng)靜分離 CDN 熱點(diǎn)隔離
網(wǎng)站運(yùn)維挑戰(zhàn):尖峰時(shí)刻,秒殺求生
”秒殺”活動(dòng)一直是網(wǎng)購平臺經(jīng)營業(yè)者又愛又怕的行銷活動(dòng)。它能夠快速聚集大量人氣和流量,帶來巨大營業(yè)額及品牌影響力。然而,”秒殺”對網(wǎng)站平臺運(yùn)維技術(shù)卻帶來極大的挑戰(zhàn)。網(wǎng)站一旦不能支撐秒殺活動(dòng)帶來的瞬間洪峰流量,將造成伺服器癱瘓、資料庫崩潰、帳務(wù)出貨問題等接踵而來,因而對商譽(yù)造成巨大的負(fù)面影響。
從技術(shù)面來看,秒殺活動(dòng)運(yùn)作也成為平臺運(yùn)維技術(shù)能力的衡量指標(biāo),能應(yīng)付瞬間洪峰流量問題,代表平臺團(tuán)隊(duì)綜合能力已達(dá)某種高度,有機(jī)會將營運(yùn)帶上另一個(gè)高點(diǎn)。以下介紹幾個(gè)處理瞬間洪峰流量問題的秒殺系統(tǒng)平臺設(shè)計(jì)方法。
熱點(diǎn)隔離
秒殺系統(tǒng)設(shè)計(jì)常用模式之一就是「熱點(diǎn)數(shù)據(jù)隔離」。大部分秒殺活動(dòng)在整個(gè)網(wǎng)站平臺中是很小一部分的行銷活動(dòng),但卻對整個(gè)網(wǎng)站系統(tǒng)造成當(dāng)機(jī),且影響網(wǎng)站全範(fàn)圍。試想,秒殺活動(dòng)造成人太多、買不到、搶不到,也就認(rèn)了,但如果該活動(dòng)導(dǎo)致整個(gè)網(wǎng)站商店正常銷售活動(dòng)也一起躺槍,就得不償失了。因此,秒殺架構(gòu)設(shè)計(jì),首要基礎(chǔ)就是將熱點(diǎn)數(shù)據(jù)隔離:不要讓1%的請求影響到另外的99%活動(dòng)!隔離後,也可以更容易對這1%的請求做針對性優(yōu)化。針對秒殺活動(dòng)可作多層次的隔離,說明如下:
● 業(yè)務(wù)隔離:把秒殺做成一種行銷活動(dòng),賣家要參加秒殺活動(dòng)需要單獨(dú)報(bào)名。技術(shù)上來說,賣家報(bào)名後就是已知熱點(diǎn),當(dāng)真正開始時(shí),可提前做好準(zhǔn)備。
●?系統(tǒng)隔離:是指運(yùn)行時(shí)的隔離,可以通過分組部署方式,讓秒殺活動(dòng)的資源利用與99%的一般活動(dòng)分開。秒殺活動(dòng)還可以利用導(dǎo)流的方式,讓流量請求自動(dòng)轉(zhuǎn)到指定的虛擬伺服器叢集。
●?數(shù)據(jù)隔離:秒殺所調(diào)用的數(shù)據(jù)大部分都是熱數(shù)據(jù),比如啟用單獨(dú)cache叢集或單獨(dú)MySQL資料庫來放熱點(diǎn)數(shù)據(jù),不讓0.01%的數(shù)據(jù)影響另外99.99%。
●?路由隔離:可以按照用戶來區(qū)分,給與不同用戶分配不同cookie,從接入時(shí)就可以路由到不同服務(wù)介面進(jìn)行存取。還可在接入時(shí),針對URL不同路徑來設(shè)置限流策略等。
動(dòng)靜分離
前面介紹在系統(tǒng)面上做隔離,屬於防守性策略,可進(jìn)一步採用進(jìn)攻策略來對付1%熱點(diǎn)請求。其中,最有效的方案為對熱點(diǎn)進(jìn)行「數(shù)據(jù)動(dòng)靜分離」,這是解決大流量系統(tǒng)的一個(gè)重要原則。
圖、數(shù)據(jù)動(dòng)靜分離策略
如上圖所示,數(shù)據(jù)動(dòng)靜分離主要原則在於把90%的靜態(tài)數(shù)據(jù)緩存在用戶端或者CDN上,讓秒殺的用戶只需要點(diǎn)擊特殊的按鈕“刷新?lián)屬彙奔纯桑恍枰⑿抡麄€(gè)頁面,如此只需要向服務(wù)端請求很少的有效數(shù)據(jù),而不需要重複請求大量靜態(tài)數(shù)據(jù)。由於秒殺動(dòng)態(tài)數(shù)據(jù)相較於普通詳情頁面的動(dòng)態(tài)數(shù)據(jù)少很多,如此作法性能會提升3倍以上。這種“刷新?lián)屬彙痹O(shè)計(jì)方式是面對秒殺活動(dòng)一種很有效的動(dòng)態(tài)架構(gòu)。綜合來說,此架構(gòu)具有以下特點(diǎn):
●?把整個(gè)頁面數(shù)據(jù)Cache放在用戶流覽器
●?如果強(qiáng)制刷新整個(gè)頁面,也會請求到CDN Cache上
●?實(shí)際有效請求只是“刷新?lián)屬彙卑粹o
分時(shí)削峰
除了從技術(shù)面進(jìn)行分流外,從業(yè)務(wù)面亦有分流方案。所謂尖峰,每秒查詢率是以秒為單位,透過流程設(shè)計(jì)將峰值時(shí)間片段拉長,系統(tǒng)就會擴(kuò)充好幾倍處理能力。熟悉淘寶秒殺活動(dòng)都知道,第一版的秒殺系統(tǒng)沒有答題功能,導(dǎo)致系統(tǒng)經(jīng)常會有撐不住狀況;之後網(wǎng)站設(shè)計(jì)增加秒殺答題後,下單時(shí)間被控制在2秒之後,大大分散系統(tǒng)瞬間流量,請參閱下圖摘錄的淘寶網(wǎng)頁面。
圖、淘寶網(wǎng)—分時(shí)削峰策略
增加答題還有另一個(gè)重要功能,就是把峰值下單請求給拉長,從以前的1秒之內(nèi)延長到2~10秒左右,請求峰值被時(shí)間片段化,因而減少服務(wù)端處理併發(fā)請求的壓力。另外,答題會造成請求的先後,較後面的請求根本到不了最後下單步驟,所以也會減少併發(fā)請求的狀況。
小結(jié)
解決網(wǎng)站高流量洪峰的方法並不是單一技術(shù)解,而是一套組合拳。技術(shù)能力有所侷限,必須透過其他方案輔助,發(fā)揮一加一大於二的效益,才是解決高併發(fā)問題的最佳解答。流量是把雙面刃,正如「水能載舟,亦能覆舟」一樣。面對流量的治水工程將是運(yùn)維技術(shù)未來至少十年的大課題,上述介紹在幾年後也許又有新的面貌與方案,但不變的是面對技術(shù)挑戰(zhàn)時(shí),持續(xù)的研究與學(xué)習(xí)是真正的樂趣之處。
Hi! 我是Roger。
從事技術(shù)工作十多年了,
喜歡玩和瞭解學(xué)習(xí)各種技術(shù)的內(nèi)涵,
喜歡聽、也喜歡分享各種狂想,
歡迎你跟我分享你的看法!
更多案例