日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
我是一個(gè)秒殺請(qǐng)求,正在逃離這顆星球...

[[347668]]

作者 | 悟空哥

 

來源 | 悟空聊架構(gòu)(ID:PassJava666)

星球簡(jiǎn)介

地點(diǎn):β-410 星系,A-731電商星球。

時(shí)間:新紀(jì)元 2036 年。

星球簡(jiǎn)介:

  • 中文名:A-731電商星球
  • 外文名:A-731 Mall
  • 分類:行星
  • 公轉(zhuǎn)周期:一年
  • 常駐用戶:中間件工作者、各種請(qǐng)求。
  • 星球總歷史:二十萬年。

星球危機(jī)

我是一個(gè)秒殺請(qǐng)求,每天的工作就是將秒殺請(qǐng)求的數(shù)據(jù)運(yùn)送給后端工作者。

這天我在 Nginx 轉(zhuǎn)發(fā)服務(wù)器上遇見了請(qǐng)求「小空」 ,我跟小空說有重要消息不方便現(xiàn)在告訴他,下班再約,然后就都匆匆趕路了。

我和小空晚上十點(diǎn)下班后來到一家酒吧,點(diǎn)了兩杯 mojito,找了一個(gè)角落坐下。

小空:你最近看起來心事重重。

我:你有沒有發(fā)現(xiàn)最近我們星球的訂單數(shù)急劇增加,每天有一千萬訂單數(shù)據(jù)產(chǎn)生,也不是一天、兩天的事了。

小空:難怪我每天加班到晚上十點(diǎn)來運(yùn)送請(qǐng)求數(shù)據(jù)。

我:我有個(gè)舅舅在航天局上班,告訴我說我們星球承載不了那么多請(qǐng)求和訂單數(shù)據(jù),不久就會(huì)出現(xiàn)「行星大爆炸」 。你可不要透露給別人。

小空:那怎么辦?

我:我們可以去 100 光年外的 T-714 星球,但是只能通過秒殺通道坐時(shí)空穿梭機(jī)去那顆星球。而且名額有限制,不知道我有沒有機(jī)會(huì)登上穿梭機(jī)。

我:明天通道會(huì)開啟兩次,上午十點(diǎn)和下午兩點(diǎn)。你明天和我一起去吧!

小空:好的。

[[347669]]

星球大爆炸

「涉及的知識(shí)點(diǎn):」

  • 這里的行星大爆炸指的是什么?
    • 因訂單數(shù)據(jù)量很大,數(shù)據(jù)庫撐不住了。數(shù)據(jù)庫可能宕機(jī)。
    • 因每天有大量請(qǐng)求發(fā)送到服務(wù)器,服務(wù)器也扛不住了。服務(wù)器可能宕機(jī)。
  • 秒殺通道每天開啟兩次代表了什么?
    • 「流量錯(cuò)峰」 ,將流量分?jǐn)偟絻蓚€(gè)秒殺場(chǎng)次。
    • 當(dāng)然「流量錯(cuò)峰」 的手段還有輸入驗(yàn)證、加入購物車等分?jǐn)偭髁康淖龇ā?/li>

秒殺通道

地點(diǎn):A-731 星球機(jī)場(chǎng)

時(shí)間:09 : 45

[[347670]]

通道

“請(qǐng)前往 T-714 星球的請(qǐng)求旅客到 Y1 站臺(tái)排隊(duì)等待進(jìn)入特殊通道, 15 分鐘后開始進(jìn)入穿梭機(jī)大廳”。大廳的廣播連續(xù)播放了三遍。

我走向了特殊通道,看到通道旁立著一個(gè)牌子:秒殺通道,只給秒殺請(qǐng)求使用。

「涉及知識(shí)點(diǎn):」

  • 秒殺場(chǎng)景為什么單獨(dú)弄了條通道?
    • 秒殺業(yè)務(wù)為了不影響系統(tǒng)的其他業(yè)務(wù)單獨(dú)部署了一套秒殺系統(tǒng)。
    • 總結(jié)為「服務(wù)單一職責(zé) + 獨(dú)立部署」

實(shí)時(shí)大屏

一抬頭看到通道上方有一個(gè)大屏,在不斷播放 T-714 星球的照片,以及機(jī)票的訂單信息。

[[347671]]

T-714 星球

有兩個(gè)穿制服的工作者正在大屏旁巡邏。一個(gè)制服上印著 Nginx,一個(gè)制服上印著 CDN。

Nginx+CDN

「涉及知識(shí)點(diǎn):」

  • Nginx 制服:
    • 穿 Nginx 制服的工作者在維護(hù) Nginx 的靜態(tài)和動(dòng)態(tài)資源。
    • 商品詳情頁是一個(gè)靜態(tài)頁面,將這些靜態(tài)頁面存儲(chǔ)到 Nginx 服務(wù)器上,訪問靜態(tài)資源時(shí),請(qǐng)求先到 Nginx,然后 Nginx 服務(wù)器通過請(qǐng)求的 URL 鏈接來匹配是否是訪問的靜態(tài)資源。
    • 大屏的商品詳情頁并不是通過發(fā)送請(qǐng)求從后臺(tái)服務(wù)器拿到的。其實(shí)實(shí)現(xiàn)了「動(dòng)靜分離」 。
  • 一張圖解釋 Nginx 動(dòng)靜分離

Nginx 流程圖

  • 靜態(tài)資源比如 HTML 文件極少變化,就可以專門放到一臺(tái)服務(wù)器上,直接訪問,不需要與后臺(tái)服務(wù)器交互(比如 Tomcat)。
  • 動(dòng)態(tài)資源比如需要從后臺(tái)拿到有多少人購買了商品,發(fā)送下單請(qǐng)求來存儲(chǔ)數(shù)據(jù),這些都稱作動(dòng)態(tài)資源,不能狹隘的理解為看得見的資源,廣義上可以包括獲取邏輯處理的結(jié)果,執(zhí)行存儲(chǔ)數(shù)據(jù)等操作。
  • CDN 制服
    • 什么是 CDN:CDN 大白話解釋就是用戶就近獲取資源,減少網(wǎng)絡(luò)傳輸時(shí)間,提高訪問速度。
    • Nginx 上放 HTML文件,而 CDN 上則放 HTML 引入的圖片文件、腳本文件。
    • 穿 CDN 制服的工作者在維護(hù) CDN 的資源。
  • 一張流程圖解釋 CDN 工作原理

CDN 流程圖

驗(yàn)證通道

時(shí)間:10:00

“驗(yàn)證通道已開啟,請(qǐng)攜帶密碼進(jìn)入!” 又是播放了三遍廣播。

輸入密碼

「涉及的知識(shí)點(diǎn):」

  • 為什么需要密碼?
    • 為了防止大量模擬的秒殺請(qǐng)求進(jìn)入業(yè)務(wù)處理流程,所以先加一道驗(yàn)證,丟棄這些假請(qǐng)求。
    • 怎么做到的?前端網(wǎng)頁先發(fā)送請(qǐng)求拿到密碼,點(diǎn)擊搶購時(shí),請(qǐng)求體中攜帶加密密碼,后端校驗(yàn)密碼是否匹配。可以通過 MD5 加密。
  • 總結(jié)為「秒殺請(qǐng)求加密」 。

穿梭機(jī)大廳

[[347674]]

穿梭機(jī)大廳

經(jīng)過驗(yàn)證通道的篩選后,有一半的假請(qǐng)求被擋在門外,像我這種拿到了正確密碼的順利進(jìn)入了穿梭機(jī)大廳。

來到大廳,發(fā)現(xiàn)大廳的正中央擺放著一個(gè)顯示器,上面顯示的紅色數(shù)字 100 赫然映入眼中。

顯示屏的左手邊站著一位穿著 Redis 統(tǒng)一制服的靚女。在一旁的我偷聽到原來她是控制顯示器顯示穿梭機(jī)剩余數(shù)量的。如果數(shù)字變?yōu)?0 ,則表示穿梭機(jī)已經(jīng)全部被占用,后來的人就得無功而返了。

「涉及的知識(shí)點(diǎn):」

  • 秒殺場(chǎng)景中,查詢剩余庫存并不是直接查數(shù)據(jù)庫,而是查 Redis 緩存的。
  • 為什么是查緩存?因?yàn)椴榫彺娴乃俣纫h(yuǎn)遠(yuǎn)快于查數(shù)據(jù)庫,減少了響應(yīng)時(shí)間,而且對(duì)數(shù)據(jù)庫的壓力減小了很多。如果很多查庫存的請(qǐng)求都到數(shù)據(jù)庫了,那數(shù)據(jù)庫就要崩了,而且數(shù)據(jù)庫干不了其他的活了。

搶票

顯示屏的右手邊站著一位西裝筆挺的年輕帥哥,看到他的袖口上掛著一個(gè)紅袖章,印著 Redisson 字樣。他一臉嚴(yán)肅的模樣,對(duì)大廳內(nèi)黑壓壓一片的請(qǐng)求熟視無睹。可能是見慣了這種場(chǎng)景吧。

正在打量這位帥哥時(shí),發(fā)現(xiàn)他的左手拿著一疊機(jī)票,沒錯(cuò),有了一張機(jī)票就可以登入穿梭機(jī)了。我以百米沖速的速度到達(dá)了他面前,到達(dá)他面前時(shí),已經(jīng)有十幾個(gè)請(qǐng)求也到了他身邊,他按照先來后到的順序依次發(fā)放機(jī)票,到我的時(shí)候,機(jī)票已經(jīng)只剩幾張了,慶幸的是我的百米沖速幫我搶到了一張機(jī)票。我問帥哥是否可以再發(fā)一張票給我,他拒絕了。

每一次發(fā)放票,穿 Redis 制服的靚女都會(huì)操作顯示屏,讓其數(shù)量減一。

十秒鐘后,票已經(jīng)發(fā)完,顯示屏顯示數(shù)字 0 。

「涉及的知識(shí)點(diǎn):」

  • Redisson 是啥呢?Redis 客戶端,解決了分布式的一些常見問題。
  • 這里其實(shí)用到了 Redisson 的信號(hào)量功能,總共有 100 張票,也就是 100 個(gè)信號(hào)量,而且票的數(shù)量不會(huì)因?yàn)槎嗑€程并發(fā)或分布式系統(tǒng)的原因而導(dǎo)致票的數(shù)量被超賣。比如賣出了 101 張票。
  • 每個(gè)人只能獲得一張票,這就是秒殺系統(tǒng)中涉及到的冪等性校驗(yàn),不能重復(fù)搶票。

售票窗口

登機(jī)牌

登機(jī)牌

發(fā)放機(jī)票的帥哥告訴我,拿到票后,到 A 窗口排隊(duì)付款,才能拿到登記牌。于是我和另外 99 個(gè)請(qǐng)求一起在 A 窗口排隊(duì)了。

看到一個(gè)請(qǐng)求想要放棄付款了,說是機(jī)票太貴了,然后準(zhǔn)備離開大廳時(shí),被發(fā)放機(jī)票的帥哥攔住了,他問請(qǐng)求是否要考慮下,有 15 分鐘的考慮時(shí)間,如果請(qǐng)求還是覺得不行,可以將機(jī)票還給他,他可以再發(fā)放給其他人。

[[347675]]

隊(duì)列削峰

「涉及的知識(shí)點(diǎn):」

  • 秒殺系統(tǒng)中常用的「隊(duì)列削峰」 。秒殺成功的請(qǐng)求,進(jìn)入隊(duì)列,慢慢創(chuàng)建訂單、扣減庫存。
  • 秒殺成功后,快速告訴用戶已經(jīng)秒殺成功,而不是等待訂單完再告訴用戶,那用戶就要多等一會(huì)了,影響體驗(yàn)。
  • 為什么要做隊(duì)列削峰?成功的請(qǐng)求不必一下子都去數(shù)據(jù)庫創(chuàng)建訂單,這樣對(duì)數(shù)據(jù)庫的壓力也會(huì)小一些。
  • 在秒殺場(chǎng)景中,很有可能有用戶搶到了但是不付款的場(chǎng)景,這個(gè)時(shí)候庫存是要加回去的,可以提供給其他用戶。

啟航

訂單創(chuàng)建成功后,我順利拿到了登機(jī)牌,通過了登機(jī)牌的校驗(yàn)后,成功登上了穿梭機(jī)。

出發(fā),去往 T-714 星球。聽說那個(gè)星球的數(shù)據(jù)庫進(jìn)行了分庫分表、服務(wù)也拆分成了微服務(wù)。

總結(jié)

上面通過科幻小說的方式來講解了秒殺系統(tǒng)中關(guān)注的點(diǎn),下面是對(duì)秒殺系統(tǒng)關(guān)注的八大點(diǎn)的一個(gè)總結(jié):

秒殺場(chǎng)景關(guān)注點(diǎn)

  • 服務(wù)單一職責(zé)、獨(dú)立部署
  • 庫存預(yù)熱、快速扣減
  • 秒殺鏈接加密
  • 動(dòng)靜分離
  • 惡意請(qǐng)求攔截
  • 流量錯(cuò)峰
  • 限流&熔斷&降級(jí)
  • 隊(duì)列削峰

本文轉(zhuǎn)載自微信公眾號(hào)「悟空聊架構(gòu)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系悟空聊架構(gòu)公眾號(hào)。

 


標(biāo)題名稱:我是一個(gè)秒殺請(qǐng)求,正在逃離這顆星球...
轉(zhuǎn)載來于:http://www.5511xx.com/article/dhsgijg.html