秒殺系統(tǒng)架構(gòu)原則

秒殺系統(tǒng)架構(gòu)原則 “四要一不要”

秒殺系統(tǒng)的本質(zhì)是滿足高并發(fā)建芙、高性能和高可用的分布式系統(tǒng)奋单。秒殺系統(tǒng)的架構(gòu)原則總結(jié)為四要一不要闻察。

數(shù)據(jù)盡量少

數(shù)據(jù)量盡量少的原則是指上傳給服務(wù)器和返回給用戶的數(shù)據(jù)要足夠小捆探,因?yàn)椴还苷?qǐng)求數(shù)據(jù)還是返回?cái)?shù)據(jù)都需要網(wǎng)絡(luò)傳輸并且經(jīng)過服務(wù)器壓縮和字符編碼奔誓,這些操作都很消耗cpu斤吐。
數(shù)據(jù)盡量小要求依賴的數(shù)據(jù)盡可能小,包括完成邏輯需要讀取和存儲(chǔ)的數(shù)據(jù)厨喂。調(diào)用其他服務(wù)涉及數(shù)據(jù)的序列化和反序列化皱碘,其中數(shù)據(jù)庫也會(huì)成為瓶頸叮叹。

請(qǐng)求數(shù)盡量少

網(wǎng)頁元素資源的加載都需要socket請(qǐng)求獲取數(shù)據(jù)蠢涝,合并css切诀、JavaScript等能有效較少請(qǐng)求數(shù)。

路徑要盡量短

路徑是指從請(qǐng)求到返回給用戶中間經(jīng)歷的節(jié)點(diǎn)數(shù)斜纪,可以是一個(gè)系統(tǒng)或者一個(gè)新的socket請(qǐng)求贫母。每增加一個(gè)路徑都會(huì)增加不確定性文兑,減少路徑可以增加可用性、提升性能(減少序列化和反序列化)腺劣、減少延時(shí)(網(wǎng)絡(luò)數(shù)據(jù)傳輸)绿贞。
把多個(gè)遠(yuǎn)程過程調(diào)用rpc合并在一臺(tái)機(jī)器部署,將rpc調(diào)用編程jvm內(nèi)部系統(tǒng)調(diào)用誓酒。

依賴盡量少

依賴是指完成一次用戶請(qǐng)求必須依賴的服務(wù)或系統(tǒng)樟蠕。0級(jí)系統(tǒng)盡量減少對(duì)1級(jí)系統(tǒng)的依賴贮聂,防止重要系統(tǒng)被不重要系統(tǒng)拖垮靠柑。

不要有單點(diǎn)

分布式系統(tǒng)重要架構(gòu)原則就是 消除單點(diǎn)。避免單點(diǎn)的方法就是將服務(wù)無狀態(tài)化吓懈,把服務(wù)狀態(tài)和服務(wù)器解耦歼冰。

動(dòng)靜分離方案

數(shù)據(jù)的動(dòng)靜分離,總結(jié)起來就是提高單次請(qǐng)求效率耻警,減少?zèng)]必要的額請(qǐng)求隔嫡。動(dòng)靜數(shù)據(jù)區(qū)分是否含有于用戶相關(guān)的數(shù)據(jù)。

緩存靜態(tài)數(shù)據(jù)

  • 緩存在離用戶最近的地方 常見的緩存方式是瀏覽器甘穿、CDN腮恩、服務(wù)器cache中。
  • 緩存用戶http鏈接 靜態(tài)改造就是直接緩存用戶的http鏈接而不只是緩存數(shù)據(jù)温兼,例如web服務(wù)器根據(jù)用戶請(qǐng)求鏈接秸滴,直接從緩存中獲取http響應(yīng)信息返回給用戶。
  • 在那層做緩存 例如使用web服務(wù)器(nginx募判、Apache)等直接緩存靜態(tài)文件荡含,可以屏蔽java層對(duì)大量鏈接的處理。

動(dòng)靜分離改造

  1. URL唯一化 可以將唯一化的URL作為key緩存
  2. 分離瀏覽者相關(guān)信息 瀏覽者相關(guān)的信息通過異步方式獲取
  3. 分離時(shí)間因素
  4. 異步地域化信息
  5. 去掉cookie 緩存中不應(yīng)該包含cookie等用戶相關(guān)信息

動(dòng)靜分離的方案

  1. 實(shí)體單機(jī)部署方案 單機(jī)部署沒有網(wǎng)絡(luò)瓶頸届垫,提升命中率減少gzip壓縮
  2. 統(tǒng)一cache層 單獨(dú)抽離cache層释液,便于維護(hù)管理和監(jiān)控。cache層內(nèi)部交換網(wǎng)絡(luò)成為瓶頸
  3. 上CDN

熱點(diǎn)數(shù)據(jù)處理

秒殺商品在很短時(shí)間內(nèi)被查詢和訪問装处。熱點(diǎn)請(qǐng)求會(huì)占用服務(wù)器大量資源误债,熱點(diǎn)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)就是熱點(diǎn)數(shù)據(jù),熱點(diǎn)數(shù)據(jù)區(qū)分靜態(tài)熱點(diǎn)數(shù)據(jù)和靜態(tài)熱點(diǎn)數(shù)據(jù)妄迁。

發(fā)現(xiàn)靜態(tài)熱點(diǎn)數(shù)據(jù)

可以通過商業(yè)手段發(fā)現(xiàn)靜態(tài)熱點(diǎn)數(shù)據(jù)寝蹈,例如讓商戶提前報(bào)名參加秒殺活動(dòng),得到靜態(tài)熱點(diǎn)數(shù)據(jù)判族。該方案實(shí)時(shí)性比較差躺盛。

發(fā)現(xiàn)動(dòng)態(tài)熱點(diǎn)數(shù)據(jù)

  1. 構(gòu)建熱點(diǎn)收集異步系統(tǒng),收集交易鏈路中的各個(gè)環(huán)節(jié)熱點(diǎn)key形帮,例如nginx槽惫、rpc周叮、中間件等。
  2. 建立一個(gè)熱點(diǎn)上報(bào)和按需訂閱熱點(diǎn)服務(wù)的下發(fā)規(guī)范界斜,把上游動(dòng)態(tài)發(fā)現(xiàn)的熱點(diǎn)數(shù)據(jù)下發(fā)到下游系統(tǒng)仿耽。
  3. 上游系統(tǒng)收集的熱點(diǎn)數(shù)據(jù)下發(fā)給下游系統(tǒng),下游系統(tǒng)提前做好熱點(diǎn)保護(hù)各薇。

熱點(diǎn)數(shù)據(jù)處理

對(duì)于熱點(diǎn)數(shù)據(jù)的處理包括项贺,優(yōu)化、限制峭判、隔離开缎。

  • 優(yōu)化:緩存熱點(diǎn)數(shù)據(jù),做好動(dòng)靜熱點(diǎn)數(shù)據(jù)分離林螃;緩存采用lru淘汰策略替換熱點(diǎn)數(shù)據(jù)
  • 限制:防止熱點(diǎn)數(shù)據(jù)占用太多服務(wù)器資源奕删,而其他請(qǐng)求得不到處理。將請(qǐng)求根據(jù)商品id做分桶處理疗认。
  • 隔離:將熱點(diǎn)數(shù)據(jù)隔離出來完残,不要讓1%的請(qǐng)求影響另外99%的請(qǐng)求。業(yè)務(wù)隔離(提前報(bào)名和熱點(diǎn)預(yù)熱)横漏;系統(tǒng)隔離(申請(qǐng)不同的域名和單獨(dú)部署)谨设;數(shù)據(jù)隔離(單獨(dú)的cache層和mysql存放熱點(diǎn)數(shù)據(jù))。

流量消峰如何處理

服務(wù)器的處理能力是恒定的缎浇,當(dāng)秒殺出現(xiàn)流量峰值時(shí) 很容易導(dǎo)致服務(wù)處理不過來扎拣。消峰的存在是可以讓服務(wù)器更加平滑的運(yùn)行。

隊(duì)列排隊(duì)

把同步的請(qǐng)求轉(zhuǎn)換為異步請(qǐng)求华畏,通過隊(duì)列接受流量洪峰鹏秋,服務(wù)端平滑的處理隊(duì)列里的請(qǐng)求信息。

延時(shí)請(qǐng)求

將請(qǐng)求拉長(zhǎng)亡笑,大道延時(shí)請(qǐng)求的目的侣夷。增加驗(yàn)證邏輯并且需要防止機(jī)器驗(yàn)證等。

分層過濾

分層過濾的主要思想就是仑乌,層層過濾掉無效的請(qǐng)求 讓漏斗的末端才是有效數(shù)據(jù)百拓。

  1. 將動(dòng)態(tài)數(shù)據(jù)緩存在前端web 緩存中,過濾掉無效的讀數(shù)據(jù)
  2. 對(duì)讀的數(shù)據(jù)不做強(qiáng)一致性驗(yàn)證
  3. 對(duì)寫數(shù)據(jù)做限流保護(hù)晰甚,丟棄超過負(fù)荷的請(qǐng)求
  4. 對(duì)寫數(shù)據(jù)做強(qiáng)一致性驗(yàn)證
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衙传,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子厕九,更是在濱河造成了極大的恐慌蓖捶,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扁远,死亡現(xiàn)場(chǎng)離奇詭異俊鱼,居然都是意外死亡刻像,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門并闲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來细睡,“玉大人,你說我怎么就攤上這事帝火×镝悖” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵犀填,是天一觀的道長(zhǎng)蠢壹。 經(jīng)常有香客問我,道長(zhǎng)宏浩,這世上最難降的妖魔是什么知残? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任靠瞎,我火速辦了婚禮比庄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乏盐。我一直安慰自己佳窑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布父能。 她就那樣靜靜地躺著神凑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪何吝。 梳的紋絲不亂的頭發(fā)上溉委,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音爱榕,去河邊找鬼瓣喊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛黔酥,可吹牛的內(nèi)容都是我干的藻三。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼跪者,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼棵帽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起渣玲,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤逗概,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后忘衍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逾苫,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡指巡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隶垮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻雪。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狸吞,靈堂內(nèi)的尸體忽然破棺而出勉耀,到底是詐尸還是另有隱情,我是刑警寧澤蹋偏,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布便斥,位于F島的核電站,受9級(jí)特大地震影響威始,放射性物質(zhì)發(fā)生泄漏枢纠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一黎棠、第九天 我趴在偏房一處隱蔽的房頂上張望晋渺。 院中可真熱鬧,春花似錦脓斩、人聲如沸木西。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽八千。三九已至,卻和暖如春燎猛,著一層夾襖步出監(jiān)牢的瞬間恋捆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工重绷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沸停,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓论寨,卻偏偏與公主長(zhǎng)得像星立,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子葬凳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容