成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

秒殺活動(dòng)的設(shè)計(jì)

Sanchi / 3396人閱讀

來(lái)自個(gè)人博客 秒殺活動(dòng)的設(shè)計(jì)
業(yè)務(wù)的基本說(shuō)明

運(yùn)營(yíng)評(píng)估最高的并發(fā)會(huì)達(dá)到 10W(根據(jù)推廣的力度,以及以往的經(jīng)驗(yàn))

業(yè)務(wù)現(xiàn)有的服務(wù)器架構(gòu) 反向代理 4臺(tái),前端機(jī) 8臺(tái), db 2臺(tái)(主從),redis 2臺(tái)(主從)以下是服務(wù)器架構(gòu)圖

動(dòng)靜分離

html 等靜態(tài)文件上CDN ,這方面壓力不大
后臺(tái)程序動(dòng)態(tài)接口,必須支持高并發(fā),用戶(hù)體驗(yàn)必須做好
后端程序優(yōu)化點(diǎn)(歡迎大家補(bǔ)充)

程序盡可能的減少加載的文件

程序減少不必要的網(wǎng)絡(luò)請(qǐng)求

redis 隊(duì)列來(lái)作 異步方式實(shí)現(xiàn)

// 后臺(tái)進(jìn)程消費(fèi)隊(duì)列 個(gè)人使用brpoplpush方法 取出數(shù)據(jù)并用存入另外隊(duì)列作數(shù)據(jù)備份
$block_expire_time = 0; # 設(shè)置阻塞等待時(shí)間為永久
$redis->brpoplpush($key, $backup_key, $block_expire_time);

redis 緩存

前端點(diǎn)擊按鈕請(qǐng)求后變灰,防止用戶(hù)重復(fù)點(diǎn)擊

靜態(tài)文件上CDN

nginx的最大連接數(shù)設(shè)置為550,防止連接數(shù)過(guò)大時(shí)全部到php,導(dǎo)致php服務(wù)掛了

針對(duì)每個(gè)用戶(hù)加并發(fā)鎖(redis),防止高并發(fā)情況判斷條件被繞過(guò),程序執(zhí)行完后解鎖。

$lock_status = $redis->set($lock_key, 1, array("NX", "EX"=>$expire_time));
高并發(fā)下獎(jiǎng)品超發(fā)問(wèn)題

個(gè)人設(shè)計(jì)的方案:提前把每個(gè)獎(jiǎng)品放入 redis隊(duì)列,每個(gè)key一個(gè)獎(jiǎng)品,隊(duì)列的長(zhǎng)度是獎(jiǎng)品的數(shù)量,可以保證獎(jiǎng)品不會(huì)超發(fā)放
另外,假設(shè)使用
悲觀鎖,在更新數(shù)據(jù)的時(shí)候加鎖,其它的都為等待狀態(tài),不合適秒殺場(chǎng)景
樂(lè)觀鎖 基本是采用帶版本號(hào)更新,版本號(hào)匹配才能更新,其它的回滾,雖然保證的數(shù)據(jù)的安全不超發(fā)放,但是在高并發(fā)場(chǎng)景下,DB只有兩臺(tái)的時(shí)候,超過(guò)mysql 進(jìn)程堆積肯定會(huì)的, 超過(guò)最大連接數(shù)是怎么辦,一系列的問(wèn)題需要解決,所以該方案不合適

程序壓測(cè)結(jié)果分析服務(wù)器能抗的并發(fā)

在平均響應(yīng)時(shí)間300ms內(nèi),單臺(tái)qps 750 左右(保持300ms是公司壓測(cè)試的規(guī)范指標(biāo))
10臺(tái)機(jī)器(后面新增2臺(tái)到 8+2)一秒鐘能處理: 10 * 750 = 7500
保守的并發(fā)只有7500,與10w 差距大,需要在執(zhí)行方案上解決,公司不可無(wú)限的申請(qǐng)web機(jī)器。
解決10W并發(fā)問(wèn)題(資源有限的情況)方案
在代理層做處理,根據(jù)權(quán)重?fù)醯?3%的量,返回800(自定義),前端判斷是否為800,是則提示火爆用戶(hù)重試(對(duì)應(yīng)的方案設(shè)置友好一些)

活動(dòng)的序列圖及說(shuō)明

接口程序不連接查詢(xún)mysql數(shù)據(jù)庫(kù)

獎(jiǎng)品的數(shù)據(jù)存放redis隊(duì)列,每個(gè)獎(jiǎng)品一個(gè)key,隊(duì)列長(zhǎng)度是獎(jiǎng)品的數(shù)量

用戶(hù)成功領(lǐng)取紅包(或搶購(gòu))時(shí)的代碼流程(不包括業(yè)務(wù)限制與防刷),從隊(duì)列獲取獎(jiǎng)品成功,再入隊(duì)列(此隊(duì)列后臺(tái)消費(fèi)入庫(kù)),返回給用戶(hù)領(lǐng)取成功。在用戶(hù)體驗(yàn)上有所提升,但如果后臺(tái)隊(duì)列堆積太多,未能消費(fèi)完成,用戶(hù)查看的紅包時(shí)是沒(méi)有對(duì)應(yīng)記錄的,所以針對(duì)自己的需求作對(duì)應(yīng)的優(yōu)化。

活動(dòng)流程圖(開(kāi)爺畫(huà)的)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22504.html

相關(guān)文章

  • 秒殺系統(tǒng)架構(gòu)如何設(shè)計(jì)之我見(jiàn)

    摘要:即使秒殺系統(tǒng)崩潰了,也不會(huì)對(duì)網(wǎng)站造成影響。動(dòng)態(tài)生成隨機(jī)下單頁(yè)面的為了避免用戶(hù)直接訪(fǎng)問(wèn)下單需要將動(dòng)態(tài)化,用隨機(jī)數(shù)作為參數(shù),只能秒殺開(kāi)始的時(shí)候才生成。架構(gòu)設(shè)計(jì)如何控制秒殺商品頁(yè)面搶購(gòu)按鈕的可用禁用。該文件不被緩存的做法隨機(jī)數(shù)。 秒殺背景 電商中為了吸引顧客、聚集人氣,經(jīng)常會(huì)策劃一些秒殺活動(dòng)?;顒?dòng)中售賣(mài)的商品,要么價(jià)格遠(yuǎn)低于市場(chǎng)價(jià)格,要么比較稀缺(如一些新發(fā)布的商品)。這些商品電商一般都會(huì)限...

    zhunjiee 評(píng)論0 收藏0
  • 秒殺系統(tǒng)架構(gòu)如何設(shè)計(jì)之我見(jiàn)

    摘要:即使秒殺系統(tǒng)崩潰了,也不會(huì)對(duì)網(wǎng)站造成影響。動(dòng)態(tài)生成隨機(jī)下單頁(yè)面的為了避免用戶(hù)直接訪(fǎng)問(wèn)下單需要將動(dòng)態(tài)化,用隨機(jī)數(shù)作為參數(shù),只能秒殺開(kāi)始的時(shí)候才生成。架構(gòu)設(shè)計(jì)如何控制秒殺商品頁(yè)面搶購(gòu)按鈕的可用禁用。該文件不被緩存的做法隨機(jī)數(shù)。 秒殺背景 電商中為了吸引顧客、聚集人氣,經(jīng)常會(huì)策劃一些秒殺活動(dòng)。活動(dòng)中售賣(mài)的商品,要么價(jià)格遠(yuǎn)低于市場(chǎng)價(jià)格,要么比較稀缺(如一些新發(fā)布的商品)。這些商品電商一般都會(huì)限...

    zhkai 評(píng)論0 收藏0
  • 秒殺系統(tǒng)架構(gòu)如何設(shè)計(jì)之我見(jiàn)

    摘要:即使秒殺系統(tǒng)崩潰了,也不會(huì)對(duì)網(wǎng)站造成影響。動(dòng)態(tài)生成隨機(jī)下單頁(yè)面的為了避免用戶(hù)直接訪(fǎng)問(wèn)下單需要將動(dòng)態(tài)化,用隨機(jī)數(shù)作為參數(shù),只能秒殺開(kāi)始的時(shí)候才生成。架構(gòu)設(shè)計(jì)如何控制秒殺商品頁(yè)面搶購(gòu)按鈕的可用禁用。該文件不被緩存的做法隨機(jī)數(shù)。 秒殺背景 電商中為了吸引顧客、聚集人氣,經(jīng)常會(huì)策劃一些秒殺活動(dòng)?;顒?dòng)中售賣(mài)的商品,要么價(jià)格遠(yuǎn)低于市場(chǎng)價(jià)格,要么比較稀缺(如一些新發(fā)布的商品)。這些商品電商一般都會(huì)限...

    HmyBmny 評(píng)論0 收藏0
  • 淺談秒殺系統(tǒng)架構(gòu)設(shè)計(jì)

    摘要:動(dòng)態(tài)生成隨機(jī)下單頁(yè)面的為了避免用戶(hù)直接訪(fǎng)問(wèn)下單需要將動(dòng)態(tài)化,用隨機(jī)數(shù)作為參數(shù),只能秒殺開(kāi)始的時(shí)候才生成。該文件不被緩存的做法隨機(jī)數(shù)。淺談秒殺系統(tǒng)架構(gòu)設(shè)計(jì)如何只允許,第一個(gè)提交的單進(jìn)入訂單系統(tǒng)。未超過(guò)秒殺商品總數(shù),提交到子訂單系統(tǒng)。 秒殺是電子商務(wù)網(wǎng)站常見(jiàn)的一種營(yíng)銷(xiāo)手段。 原則 不要整個(gè)系統(tǒng)宕機(jī)。 即使系統(tǒng)故障,也不要將錯(cuò)誤數(shù)據(jù)展示出來(lái)。 盡量保持公平公正。 實(shí)現(xiàn)效果 秒殺開(kāi)始前,...

    maochunguang 評(píng)論0 收藏0
  • 高并發(fā)下秒殺商品,必須知道9個(gè)細(xì)節(jié)

    摘要:但很顯然這些請(qǐng)求的處理性能并不好,有沒(méi)有更好的解決方案這時(shí)可以想到布隆過(guò)濾器。系統(tǒng)根據(jù)商品,先從布隆過(guò)濾器中查詢(xún)?cè)撌欠翊嬖?,如果存在則允許從緩存中查詢(xún)數(shù)據(jù),如果不存在,則直接返回失敗。所以布隆過(guò)濾器絕大部分使用在緩存數(shù)據(jù)更新很少的場(chǎng)景中。高并發(fā)下如何設(shè)計(jì)秒殺系統(tǒng)?這是一個(gè)高頻面試題。這個(gè)問(wèn)題看似簡(jiǎn)單,但是里面的水很深,它考查的是高并發(fā)場(chǎng)景下,從前端到后端多方面的知識(shí)。 秒殺一般出現(xiàn)在商...

    VincentFF 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<