日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

go 商品秒杀系统架构设计

發(fā)布時(shí)間:2024/3/24 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go 商品秒杀系统架构设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

秒殺搶購背景

秒殺搶購架構(gòu)設(shè)計(jì)和模塊劃分

秒殺搶購接入層實(shí)現(xiàn)

電商網(wǎng)站的常規(guī)架構(gòu)

常規(guī)狀態(tài)下電商網(wǎng)站的架構(gòu)體系如下:

秒殺搶購業(yè)務(wù)分析

正常電子商務(wù)流程:

查詢商品 》 創(chuàng)建訂單 》 扣減庫存 》更新訂單 》付款 》賣家發(fā)貨 》確認(rèn)收貨

秒殺業(yè)務(wù)的特性:

(1)低廉價(jià)格;(2)大幅推廣;(3)瞬時(shí)售空;(4)一般是定時(shí)上架;(5)時(shí)間短、瞬時(shí)并發(fā)量高;

?假設(shè)某網(wǎng)站秒殺活動(dòng)只推出一件商品,預(yù)計(jì)會(huì)吸引1萬人參加活動(dòng),也就說最大并發(fā)請(qǐng)求數(shù)是10000,秒殺系統(tǒng)需要面對(duì)的技術(shù)挑戰(zhàn)有:

1.對(duì)現(xiàn)有網(wǎng)站業(yè)務(wù)造成沖擊

秒殺活動(dòng)只是網(wǎng)站營銷的一個(gè)附加活動(dòng),這個(gè)活動(dòng)具有時(shí)間短,并發(fā)訪問量大的特點(diǎn),如果和網(wǎng)站原有應(yīng)用部署在一起,必然會(huì)對(duì)現(xiàn)有業(yè)務(wù)造成沖擊,稍有不慎可能導(dǎo)致整個(gè)網(wǎng)站癱瘓。

解決方案:將秒殺系統(tǒng)獨(dú)立部署,甚至使用獨(dú)立域名,使其與網(wǎng)站完全隔離。

2. 高并發(fā)下的應(yīng)用、數(shù)據(jù)庫負(fù)載

用戶在秒殺開始前,通過不停刷新瀏覽器頁面以保證不會(huì)錯(cuò)過秒殺,這些請(qǐng)求如果按照一般的網(wǎng)站應(yīng)用架構(gòu),訪問應(yīng)用服務(wù)器、連接數(shù)據(jù)庫,會(huì)對(duì)應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器造成負(fù)載壓力。

解決方案:重新設(shè)計(jì)秒殺商品頁面,不使用網(wǎng)站原來的商品詳細(xì)頁面,頁面內(nèi)容靜態(tài)化,用戶請(qǐng)求不需要經(jīng)過應(yīng)用服務(wù)。

3. 突然增加的網(wǎng)絡(luò)及服務(wù)器帶寬

假設(shè)商品頁面大小200K(主要是商品圖片大小),那么需要的網(wǎng)絡(luò)和服務(wù)器帶寬是2G(200K×10000),這些網(wǎng)絡(luò)帶寬是因?yàn)槊霘⒒顒?dòng)新增的,超過網(wǎng)站平時(shí)使用的帶寬。

解決方案:因?yàn)槊霘⑿略龅木W(wǎng)絡(luò)帶寬,必須和運(yùn)營商重新購買或者租借。為了減輕網(wǎng)站服務(wù)器的壓力,需要將秒殺商品頁面緩存在CDN,同樣需要和CDN服務(wù)商臨時(shí)租借新增的出口帶寬。

4. 直接下單

秒殺的游戲規(guī)則是到了秒殺才能開始對(duì)商品下單購買,在此時(shí)間點(diǎn)之前,只能瀏覽商品信息,不能下單。而下單頁面也是一個(gè)普通的URL,如果得到這個(gè)URL,不用等到秒殺開始就可以下單了。

解決方案:為了避免用戶直接訪問下單頁面URL,需要將改URL動(dòng)態(tài)化,即使秒殺系統(tǒng)的開發(fā)者也無法在秒殺開始前訪問下單頁面的URL。辦法是在下單頁面URL加入由服務(wù)器端生成的隨機(jī)數(shù)作為參數(shù),在秒殺開始的時(shí)候才能得到。

5. 如何控制秒殺商品頁面購買按鈕的點(diǎn)亮

購買按鈕只有在秒殺開始的時(shí)候才能點(diǎn)亮,在此之前是灰色的。如果該頁面是動(dòng)態(tài)生成的,當(dāng)然可以在服務(wù)器端構(gòu)造響應(yīng)頁面輸出,控制該按鈕是灰色還 是點(diǎn)亮,但是為了減輕服務(wù)器端負(fù)載壓力,更好地利用CDN、反向代理等性能優(yōu)化手段,該頁面被設(shè)計(jì)為靜態(tài)頁面,緩存在CDN、反向代理服務(wù)器上,甚至用戶瀏覽器上。秒殺開始時(shí),用戶刷新頁面,請(qǐng)求根本不會(huì)到達(dá)應(yīng)用服務(wù)器。

解決方案:使用JavaScript腳本控制,在秒殺商品靜態(tài)頁面中加入一個(gè)JavaScript文件引用,該JavaScript文件中包含 秒殺開始標(biāo)志為否;當(dāng)秒殺開始的時(shí)候生成一個(gè)新的JavaScript文件(文件名保持不變,只是內(nèi)容不一樣),更新秒殺開始標(biāo)志為是,加入下單頁面的URL及隨機(jī)數(shù)參數(shù)(這個(gè)隨機(jī)數(shù)只會(huì)產(chǎn)生一個(gè),即所有人看到的URL都是同一個(gè),服務(wù)器端可以用redis這種分布式緩存服務(wù)器來保存隨機(jī)數(shù)),并被用戶瀏覽器加載,控制秒殺商品頁面的展示。這個(gè)JavaScript文件的加載可以加上隨機(jī)版本號(hào)(例如xx.js?v=32353823),這樣就不會(huì)被瀏覽器、CDN和反向代理服務(wù)器緩存。

這個(gè)JavaScript文件非常小,即使每次瀏覽器刷新都訪問JavaScript文件服務(wù)器也不會(huì)對(duì)服務(wù)器集群和網(wǎng)絡(luò)帶寬造成太大壓力。

…………

更多內(nèi)容參考:

秒殺系統(tǒng)架構(gòu)分析與實(shí)戰(zhàn) - 陶邦仁的個(gè)人空間 - OSCHINA - 中文開源技術(shù)交流社區(qū)

秒殺搶購功能的演進(jìn)

秒殺搶購的發(fā)展經(jīng)歷如下:

  • 1.0版,沒有獨(dú)立的秒殺系統(tǒng),代碼高度耦合,由于MySQL的性能瓶頸大流量涌入會(huì)導(dǎo)致平臺(tái)整體崩潰。
  • 2.0版,使用Redis搭建獨(dú)立的秒殺系統(tǒng),實(shí)現(xiàn)系統(tǒng)解耦進(jìn)行限流和過載保護(hù),平臺(tái)不會(huì)崩潰,但是秒殺系統(tǒng)可能會(huì)崩潰。
  • 3.0版,對(duì)秒殺系統(tǒng)內(nèi)部進(jìn)行拆分,對(duì)秒殺系統(tǒng)單獨(dú)做限流和過載保護(hù)等。
  • 秒殺搶購架構(gòu)

    秒殺搶購架構(gòu)圖如下,其內(nèi)部還有一個(gè)日志收集模塊用于數(shù)據(jù)挖掘篩選黑名單等。

    代碼實(shí)現(xiàn)

    接入層

    邏輯層

    總結(jié)

    以上是生活随笔為你收集整理的go 商品秒杀系统架构设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。