无遮挡粉嫩小泬久久久久久久,成人午夜性色福利视频,一级欧美黄片在线播放,国产av一区仑乱久久精品

如何設(shè)計(jì)一個(gè)高可用、高并發(fā)秒殺系統(tǒng)?
2021-06-15 14:24:57 瀏覽:6769

2071d8ceb0dcdb82e22cda000bdbd6b9.jpg

如今的互聯(lián)網(wǎng)已經(jīng)在海量服務(wù)領(lǐng)域有了很成熟的理論,在電商領(lǐng)域,存在著典型的秒殺業(yè)務(wù)場(chǎng)景,那何謂秒殺場(chǎng)景呢?簡(jiǎn)單的來(lái)說(shuō)就是一件商品的購(gòu)買(mǎi)人數(shù)遠(yuǎn)遠(yuǎn)大于這件商品的庫(kù)存,而且這件商品在很短的時(shí)間內(nèi)就會(huì)被搶購(gòu)一空。


高并發(fā)的接口/系統(tǒng)有一個(gè)共同的特性,那就是”快”。在系統(tǒng)其它條件既定的情況下,系統(tǒng)處理請(qǐng)求越快,用戶得到反饋的時(shí)間就越短,單位時(shí)間內(nèi)服務(wù)器能夠處理請(qǐng)求的數(shù)量就會(huì)越多。所以”快”幾乎可以算是高并發(fā)系統(tǒng)的要滿足的必要條件,要評(píng)估一個(gè)系統(tǒng)性能如何,某次優(yōu)化是否提高系統(tǒng)的容量,”快”是一個(gè)很直觀的衡量標(biāo)準(zhǔn)。


那么如何設(shè)計(jì)一個(gè)高可用、高并發(fā)秒殺系統(tǒng)呢?


秒殺系統(tǒng)一般設(shè)計(jì)思路

秒殺系統(tǒng)的特點(diǎn)是:

§ 瞬時(shí)請(qǐng)求量很高

§ 持續(xù)時(shí)間較短

所以秒殺系統(tǒng)需要解決的是「在高并發(fā)情況下,用戶請(qǐng)求及數(shù)據(jù)更新的問(wèn)題」!


一般的設(shè)計(jì)思路:

§ (變相)擴(kuò)容

§ 提高性能


具體方式有:

動(dòng)靜分離

對(duì)于一般的應(yīng)用來(lái)說(shuō),請(qǐng)求流程大致如下:

§ 服務(wù)端接收到請(qǐng)求,從數(shù)據(jù)庫(kù)中查詢相應(yīng)數(shù)據(jù)

§ 選擇對(duì)應(yīng)的展示模板

§ 通過(guò)模板和數(shù)據(jù)渲染出最終頁(yè)面

§ 將頁(yè)面返回給客戶端


當(dāng)訪問(wèn)量很大的時(shí)候,服務(wù)器壓力會(huì)非常的大!解決方案就是動(dòng)靜分離!

做軟件開(kāi)發(fā)的都知道要「將變化的內(nèi)容和不變的內(nèi)容隔離開(kāi)」,以便于獨(dú)立進(jìn)化。這里其實(shí)也是一樣的思路。


模板是個(gè)靜態(tài)的內(nèi)容,部署后一般是不會(huì)變化的;而數(shù)據(jù)是個(gè)相對(duì)動(dòng)態(tài)的內(nèi)容,根據(jù)請(qǐng)求參數(shù)的不同,數(shù)據(jù)可能不同。所以我們需要將模板與數(shù)據(jù)分離。


以前的做法是后端事先生成渲染后的頁(yè)面,緩存起來(lái)或直接部署到靜態(tài)服務(wù)器或CDN,請(qǐng)求時(shí)直接從緩存(靜態(tài)服務(wù)器/CDN)中獲取頁(yè)面,而動(dòng)態(tài)數(shù)據(jù)通過(guò)AJAX請(qǐng)求的方式獲取。服務(wù)器不再需要渲染頁(yè)面,只需要返回少量的數(shù)據(jù)即可。既降低了服務(wù)器壓力,又減少了服務(wù)端數(shù)據(jù)的傳輸。


而現(xiàn)在很流行的前后端分離就能很容易的解決這個(gè)問(wèn)題。頁(yè)面獨(dú)立部署,數(shù)據(jù)異步獲取,頁(yè)面渲染由瀏覽器負(fù)責(zé)。這里和普通的前后端分離還有些差異,需要將相對(duì)靜態(tài)的數(shù)據(jù)都靜態(tài)化,以減少動(dòng)態(tài)數(shù)據(jù)量。


分離后,靜態(tài)內(nèi)容和動(dòng)態(tài)內(nèi)容就可以獨(dú)立進(jìn)化。例如靜態(tài)內(nèi)容可以部署到CDN上,用戶可以從最近的服務(wù)器獲取到數(shù)據(jù)。相對(duì)熱點(diǎn)的動(dòng)態(tài)數(shù)據(jù)可以做緩存,降低數(shù)據(jù)庫(kù)壓力,進(jìn)一步提高服務(wù)端響應(yīng)。


獨(dú)立部署

「獨(dú)立部署」其實(shí)也可以看成是一種「動(dòng)靜分離」。將秒殺系統(tǒng)這個(gè)相對(duì)動(dòng)態(tài)的系統(tǒng),和相對(duì)靜態(tài)的業(yè)務(wù)系統(tǒng)分開(kāi)部署。

原因很好理解,秒殺系統(tǒng)的請(qǐng)求量很大,可能會(huì)由于預(yù)估不足或系統(tǒng)問(wèn)題,導(dǎo)致了秒殺系統(tǒng)的負(fù)載過(guò)高、響應(yīng)變慢。如果秒殺系統(tǒng)是業(yè)務(wù)系統(tǒng)的一部分,則會(huì)導(dǎo)致業(yè)務(wù)系統(tǒng)響應(yīng)變慢,甚至導(dǎo)致系統(tǒng)沒(méi)有響應(yīng)。且秒殺是個(gè)短期活動(dòng)也不是核心業(yè)務(wù),而業(yè)務(wù)系統(tǒng)是需要長(zhǎng)期穩(wěn)定運(yùn)行的。不能因?yàn)橐粋€(gè)短期非核心的活動(dòng),而影響了核心的業(yè)務(wù)系統(tǒng)。


所以秒殺系統(tǒng)最好和業(yè)務(wù)系統(tǒng)分開(kāi)獨(dú)立部署。即使秒殺系統(tǒng)掛了,也不會(huì)影響業(yè)務(wù)系統(tǒng)的正常對(duì)外服務(wù)。

同樣的道理,秒殺系統(tǒng)的數(shù)據(jù)庫(kù)也需要和業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)獨(dú)立開(kāi)。


限流削峰

動(dòng)靜分離,獨(dú)立部署能提高系統(tǒng)的響應(yīng)能力和容量。但是可提供的訪問(wèn)量是一定的,當(dāng)超過(guò)了系統(tǒng)所能承受的容量,該怎么辦呢?你可能會(huì)說(shuō),可以擴(kuò)容啊。的確是可以,但是擴(kuò)容也是有限度的。假設(shè)單機(jī)能承受10萬(wàn)的請(qǐng)求量,預(yù)計(jì)有1億的請(qǐng)求量,你要擴(kuò)容1000臺(tái)服務(wù)器?!這會(huì)導(dǎo)致嚴(yán)重的浪費(fèi)。


首先,上面提到了,秒殺是短期活動(dòng),為了秒殺多部署1000臺(tái)服務(wù)器,秒殺結(jié)束后這些服務(wù)器再銷(xiāo)毀?既浪費(fèi)硬件資源、又浪費(fèi)人力資源。


其次,秒殺的商品數(shù)量其實(shí)并不多,可能秒殺賺的那點(diǎn)錢(qián)還不夠付服務(wù)器和帶寬的費(fèi)用。真·花錢(qián)賺吆喝!


我們?cè)撊绾翁幚砟兀?/p>


上面說(shuō)了,秒殺的商品數(shù)量不多,也就是說(shuō),其實(shí)最后的真實(shí)成交量并不大。再進(jìn)一步講,很多的請(qǐng)求都是沒(méi)用的。


其次,在秒殺前,買(mǎi)家會(huì)頻繁的刷頁(yè)面,這又額外增加了無(wú)用請(qǐng)求的數(shù)量。


我們只要把這些無(wú)用的請(qǐng)求提前都過(guò)濾掉,最終到達(dá)服務(wù)端的請(qǐng)求就會(huì)少很多,也就不需要這么多的服務(wù)器了。這就是限流削峰。具體做法有很多:

§ 秒殺時(shí)間未到時(shí),秒殺按鈕置灰:也就是說(shuō)在秒殺未到時(shí)間時(shí),不可發(fā)送下單請(qǐng)求。前面我們已經(jīng)將頁(yè)面靜態(tài)化,分發(fā)到了CDN,所以用戶的刷新操作只會(huì)到CDN。這就削除了刷新操作導(dǎo)致的請(qǐng)求。

§ 秒殺按鈕點(diǎn)擊后置灰:即避免double-click,一個(gè)用戶只能點(diǎn)擊一次。限制用戶點(diǎn)擊次數(shù),避免秒殺工具帶來(lái)過(guò)量無(wú)效請(qǐng)求。

§ 秒殺前先做題:即在秒殺前需要先做題目,類(lèi)似驗(yàn)證碼功能,其實(shí)是降低了用戶的點(diǎn)擊頻率,也限制了秒殺工具的使用。不過(guò)體驗(yàn)不好,不推薦使用。

§ 限制請(qǐng)求次數(shù):可以用js判定,限制用戶多少時(shí)間間隔內(nèi),只能請(qǐng)求多少次。在代理層也可以基于ip做次數(shù)限制,限制單ip的請(qǐng)求數(shù)量。

§ 直接跳轉(zhuǎn):假設(shè)秒殺已結(jié)束或秒殺隊(duì)列已滿,對(duì)后續(xù)的請(qǐng)求,直接跳轉(zhuǎn)到秒殺結(jié)束頁(yè)面。請(qǐng)求不再到達(dá)服務(wù)端。

§ 請(qǐng)求排隊(duì):通過(guò)消息隊(duì)列、內(nèi)存排隊(duì)等手段,對(duì)請(qǐng)求進(jìn)行排隊(duì)。類(lèi)似EDA、Reactor。當(dāng)隊(duì)列滿了以后,可拒絕后續(xù)請(qǐng)求。


服務(wù)端優(yōu)化

上面的「請(qǐng)求排隊(duì)」,可以做在web服務(wù)層,也可以在服務(wù)端處理,亦可以兩處都處理。除了排隊(duì),服務(wù)端的優(yōu)化的核心手段就是緩存,盡量減少到數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn),將熱點(diǎn)數(shù)據(jù)緩存起來(lái)。


更極致的優(yōu)化可能還涉及到:

§ 減少序列化:大家都知道Java序列化和反序列化都是比較耗時(shí)的操作,即使使用第三方的序列化工具,也是需要消耗時(shí)間的,盡量減少序列化操作,能減少這部分的時(shí)間消耗

§ 不要使用框架:現(xiàn)在一般開(kāi)發(fā)都會(huì)使用框架開(kāi)發(fā),例如SpringMVC。SpringMVC使用了前端控制器,還包括很多的Filter,攔截器等,額外的增加了請(qǐng)求時(shí)間。使用純Servlet,能降低此部分的時(shí)間消耗。因?yàn)楫吘姑霘⑦壿嫼?jiǎn)單,用不用框架,開(kāi)發(fā)效率影響不大。

§ 使用字節(jié)流:即使用InputStream、OutputStream,不要使用Writer,Reader。與「減少序列化」類(lèi)似,編解碼也會(huì)消耗時(shí)間。


另外還有扣庫(kù)存邏輯處理:

§ 拍下減庫(kù)存:用戶搶到后即扣除庫(kù)存,但是如果用戶搶到了不付款,最后秒殺的商品可能實(shí)際并沒(méi)有賣(mài)出去。

§ 付款減庫(kù)存:到用戶付款后才去扣庫(kù)存。這可能導(dǎo)致下單數(shù)量遠(yuǎn)超商品數(shù)量。導(dǎo)致的問(wèn)題是,要么后付款的買(mǎi)家被提示付款失敗。要么就是超賣(mài)。

§ 預(yù)扣庫(kù)存:用戶搶到即扣除庫(kù)存。規(guī)定時(shí)間內(nèi)沒(méi)有付款則取消訂單,恢復(fù)庫(kù)存。這個(gè)是常用手段

上面說(shuō)的秒殺系統(tǒng)的一般設(shè)計(jì)思路。然后我們就要來(lái)考慮秒殺系統(tǒng)的公平性!


公平?公平!

習(xí)慣性的思維告訴我們先到先得原則,即優(yōu)先到達(dá)的請(qǐng)求,優(yōu)先排隊(duì)下單。這就導(dǎo)致,在秒殺結(jié)束前或請(qǐng)求被處理前,都需要等待,直到服務(wù)器處理后才有返回。

這明顯增加了服務(wù)端的壓力,這也是導(dǎo)致的吞吐性能被嚴(yán)重影響到。但不是根本原因。

根本原因是這樣做就真的公平嗎?!這就要看每個(gè)人對(duì)公平的理解了!我認(rèn)為這世上「沒(méi)有絕對(duì)的公平,只有相對(duì)的公平」!


你在秒殺系統(tǒng)里排隊(duì),保證先到先得,這就是公平嗎?

§ 如果一個(gè)買(mǎi)家是1M帶寬,另一個(gè)買(mǎi)家是100M光纖,他們同時(shí)秒殺,你能保證公平嗎?

§ 如果你的服務(wù)器在北京,北京的買(mǎi)家是不是比廣州的買(mǎi)家更容易秒殺到?你能保證公平嗎?

§ 如果一個(gè)買(mǎi)家是萬(wàn)年死宅,手速奇快;另一個(gè)買(mǎi)家手不太靈活。你能保證公平嗎?


既然不能,為什么要在服務(wù)端保證公平呢?!


秒殺就是拼個(gè)運(yùn)氣,只要不暗箱操作,那就是公平的。所以我們不保證先到達(dá)的請(qǐng)求就能先買(mǎi)到商品!客戶哪知道他是不是先到的呢(雖然這樣說(shuō),看起來(lái)不公平,但實(shí)際確實(shí)是這樣)。所以放棄了所謂的公平。


使用了兩個(gè)隊(duì)列:

§ 前端node隊(duì)列

§ 后端下單隊(duì)列


大致請(qǐng)求流程如下:

§ 假設(shè)商品數(shù)量為100,那可以設(shè)定node隊(duì)列長(zhǎng)度為1000,下單隊(duì)列長(zhǎng)度為100

§ 秒殺開(kāi)始后,node隊(duì)列接收前端請(qǐng)求,先到先進(jìn)。當(dāng)隊(duì)列滿了以后,直接響應(yīng)后面的請(qǐng)求,秒殺失敗/結(jié)束。

§ node隊(duì)列中的數(shù)據(jù)批量傳遞給后端的下單隊(duì)列,由消費(fèi)線程從下單隊(duì)列中獲取請(qǐng)求進(jìn)行處理

§ 如果100個(gè)商品全部處理完成(下單后,規(guī)定時(shí)間內(nèi)沒(méi)有付款,取消訂單,恢復(fù)庫(kù)存),則秒殺結(jié)束

§ 如果100個(gè)商品沒(méi)有處理結(jié)束,繼續(xù)從node隊(duì)列獲取下一批數(shù)據(jù)處理

§ 如果node隊(duì)列有空余后,后續(xù)的請(qǐng)求繼續(xù)進(jìn)入隊(duì)列

§ node隊(duì)列中的請(qǐng)求設(shè)置超時(shí),規(guī)定時(shí)間內(nèi)沒(méi)有得到處理,直接返回秒殺失敗/結(jié)束


總結(jié)

人員、技術(shù)、考量點(diǎn)的不同都會(huì)影響架構(gòu)設(shè)計(jì)。一個(gè)符合當(dāng)前人員、技術(shù)以及適合考量點(diǎn)的架構(gòu),可能能得到意想不到的效果。


目前晨通信息科技有限公司在汕頭珠港新城,聯(lián)泰時(shí)代總部中心3棟10樓,歡迎廣大客戶通過(guò)電話、微信咨詢了解,電話是:18923665588,也可以撥打免費(fèi)電話:400-830-3889。


聯(lián)系方式:400-830-3889 地址:聯(lián)泰時(shí)代總部中心T3棟10樓
Copyright 2006-2024 晨通科技 | 常年律師顧問(wèn):廣東華通律師事務(wù)所 | 網(wǎng)站備案號(hào):粵B1.B2-20071026 粵公網(wǎng)安備
在線咨詢
預(yù)約上門(mén)
掃碼添加企微客服
現(xiàn)在咨詢,贈(zèng)送企業(yè)量身定制方案。
打開(kāi)手機(jī)掃碼加我微信
預(yù)約上門(mén)演示
客戶經(jīng)理會(huì)上門(mén)或視頻為你演示
服務(wù)項(xiàng)目
定制技術(shù)開(kāi)發(fā)服務(wù)
APP/小程序定制開(kāi)發(fā)
APP/小程序商城系統(tǒng)
掃碼點(diǎn)餐/外賣(mài)系統(tǒng)
酒店訂房/管理系統(tǒng)
企業(yè)建站服務(wù)
會(huì)員卡消費(fèi)/管理系統(tǒng)
立即預(yù)約
少妇高潮真爽在线观看-韩国福利视频一区二区三区-警花av一区二区三区-尤物视频国产在线观看| 中文字幕乱码亚洲精品-亚洲伊人久久大香线蕉-麻豆视传媒视频短免费网站-极品美女被后入干出水视频| 91大神麻豆精品在线-熟女av综合一区二区三区-在线播放亚洲国产一区二区三-亚洲精品日韩在线丰满| 欧美黄色在线观看免费-日本高清精品一卡二卡-日本综合精品一区二区在线-国产精品伦人一久二久三久| 亚洲不卡av影院在线-久久精品伊人久久精品-亚洲国产日韩欧美三级-久久亚洲中文字幕精品二区| 少妇被无套内谢免费视频看看-不卡中文在线观看网站-国产精品男女爽免费视频-91精品福利视频久久| 国内自拍精品视频在线-欧美黑人巨大一区二区三区-中文字幕日韩精品人妻-婷婷激情五月天中文字幕| 国产精品色哟哟在线观看-亚洲精品国产自在现线-国产成人精品免费播放视频不卡-国产精品高潮呻吟av久久黄| 婷婷精品国产亚洲av不片-色播放视频在线观看视频在线播放-色综合91久久精品中文字幕-午夜视频网一区二区三区| 深夜福利在线观看日韩-国产成人夜色高潮在线观看-熟女人妻少妇精品视频-97在线观看完整免费| 国产自拍在线视频免费观看-精品午夜福利一区二区三区-日韩av在线免费观看毛片-国产三级黄色片在线观看| 亚洲av午夜精品久久看一区-日韩欧美91麻豆精东-久久一区二区三区在线观看-国产黄色人人爱人人做| 日韩精品中文字幕人妻一区-国产免费午夜福利一区二区-亚洲国产精品久久亚洲精品-亚洲伦理一区二区三区中文| 亚洲av日韩av天堂影片精品-熟妇人妻丰满少妇中文-国产精品日本一区二区三区-国产精品熟女乱色一区二区| 精品人妻一区二区三区久久91-久久精品亚洲国产av搬运工-日本熟女人妻一区二区三区-亚洲国产精品高清线久久| 中文字幕一区二区三区日韩精品-久久老熟女一区二区三区福利-久久精品国产自产对白一区-午夜欧美牲交激情网站| 99久久亚洲综合精品成人网-国产性感丝袜在线观看-国产一区二区三区激情啪啪啪-久久香蕉综合国产蜜臀av| 四虎永久在线高清国产精品-一区二区三区日本精品视频-国产午夜福利精品久久不卡-一区二区三区国产亚洲自拍| 国产一级亚洲一级一区-国产精品一亚洲av日韩av-日韩高清有码中文字幕-久久国产精品免费一区二区三区| 蜜臀av午夜精品福利-日韩精品av在线一区二区-丰满熟女人妻一区二区三区-懂色日韩欧美国产亚洲| 日韩亚洲高清在线一区二区三区-国产无遮挡爆操美女老板-伊人久久亚洲精品国产av-国产亚洲综合成人在线| 日本一区二区三区最新章节-香蕉av久久一区二区三区-久久久国产亚洲精品视频-国产伦精品一区二区三区精品视频| 亚洲av优优优色首页-国产精品国产三级av-国产自拍精品午夜福利-亚洲av高清一区二区三区| 与老熟女激情av国产-91午夜福利在线观看视频-国产特级黄片免费观看-精品亚洲熟妇中文字幕| 久久女人天堂精品av-韩国中文字幕三级精品久久-国产成人精品日本亚洲i8-免费黄色一级大片91| 色男人天堂综合久久av-蜜桃精品一区二区三区蜜桃臀-国产粉嫩高中生第一次不戴套-成人激情自拍视频在线观看| 四虎永久在线高清国产精品-一区二区三区日本精品视频-国产午夜福利精品久久不卡-一区二区三区国产亚洲自拍| 色男人天堂综合久久av-蜜桃精品一区二区三区蜜桃臀-国产粉嫩高中生第一次不戴套-成人激情自拍视频在线观看| 亚洲欧洲偷拍自拍av-日韩午夜福利剧场久久-午夜福利成人在线视频-91午夜福利在线观看精品| 亚洲国产一区二区精品专-人妻被黑人侵犯中文字幕夜色-国模午夜写真福利在线-成人自拍偷拍在线观看| 91人人妻人人澡人人爽超污-精久国产av一区二区三区-日韩av在线一区二区三区-免费视频又爽内射男女| 日韩av不卡一区二区-国产白丝精品91久久-午夜福利理论片在线播放-国产粉饼哪个牌子好用| 日韩精品中文字幕免费人妻-欧美精品在线一区二区三区-女人张开腿让男人捅爽-99久久中出中文字幕| 久久国产精品亚洲va麻豆-嫩模大尺度偷拍在线视频-免费三级在线观看自拍-天堂av在线男女av| 国产精品一区在线观看网址-亚洲国产日韩精品理论在线-在线播放视频在线观看视频-黄色片三级三级免费看| 天天色天天干天天操天天射-日本午夜一区二区福利激情-国产精品一区中文字幕在线-欧美性生活网站视频观看| 免费手机在线观看bbb视频-国产欧美亚洲精品第1页青草-国产黄a三级三18级三级看三级-宅男视频在线观看一区二区三区| 欧美日韩国产激情综合-九九精品国产亚洲av日韩-国产午夜激情免费视频-日本厕所偷拍尿尿视频| 免费人成视频在线观看播放网站-日韩精品久久精品三级-91精品一区二区三区久久蜜桃-中文字幕av久久激情亚洲精品| 久久一日本道色综合久久大香-欧美午夜福利视频网站-亚洲av午夜精品一区二区-日韩精品区一区二区三区激情| 亚洲成人av综合在线-日韩精品久久久中文字幕人妻-国产精品无套白嫩剧情-五月婷婷久久激情综合|