實(shí)際上這不是一個(gè)很好回答的問(wèn)題,如果只是要簡(jiǎn)短回答,就是依照實(shí)際狀況去調(diào)整,但這樣實(shí)在太籠統(tǒng)了。 這篇文章提供了一個(gè)思考方向,讓您可以與自己的開(kāi)發(fā)公司一起去檢測(cè)項(xiàng)目能支撐的人數(shù)。文章后半段還會(huì)提供您一些建議,讓您想要做特價(jià)促銷活動(dòng)時(shí),不會(huì)把主機(jī)給搞宕機(jī)了。
不只現(xiàn)實(shí)世界要擔(dān)心人潮,網(wǎng)站的人潮一樣可以讓您的業(yè)務(wù)癱瘓
關(guān)于項(xiàng)目的用戶乘載量
我們最常被客戶問(wèn)到的問(wèn)題,像是:網(wǎng)站能不能承載 1000-3000 人同時(shí)上線?
或是:你們家做的網(wǎng)站能乘載多少人? 之類的。
其實(shí)這個(gè)問(wèn)題沒(méi)有固定解答,一般來(lái)說(shuō),我們會(huì)請(qǐng)您先思考以下幾個(gè)要點(diǎn):
用戶在網(wǎng)站上活動(dòng)的模式? 目標(biāo)是獲得什么?
有沒(méi)有要搶購(gòu)某個(gè)商品
有沒(méi)有要及時(shí)刷新? 大家會(huì)不會(huì)一直重新刷新?
假設(shè)要乘載 3000 人,這 3000 人會(huì)是靜態(tài)看內(nèi)容? 還是會(huì)一直與網(wǎng)站或小程序互動(dòng)?
是同一時(shí)間開(kāi)放進(jìn)到網(wǎng)站或小程序內(nèi)? 還是在不同的時(shí)間斷斷續(xù)續(xù)進(jìn)入網(wǎng)站或小程序?
這些問(wèn)題能夠幫助您先思考好自己公司的業(yè)務(wù)性質(zhì)是什么,以及如何與消費(fèi)者互動(dòng),有了這些問(wèn)題的解答后,自然知道網(wǎng)站的承載量大概多大。
以上面的問(wèn)題來(lái)說(shuō),假如您的網(wǎng)站偏向新聞?lì)愋?,或者單純的企業(yè)形象官網(wǎng),由于都是靜態(tài)頁(yè)面,所以在小型主機(jī)上,每分鐘網(wǎng)站可能可以支撐100次頁(yè)面點(diǎn)擊。 假設(shè)用戶觀看每篇文章,大概會(huì)花 5 分鐘,那么每分鐘可以乘載的人數(shù)可以算成是 500 人。
再者,一臺(tái)小型主機(jī),通常的承載量是每分鐘 100 次點(diǎn)擊,中型主機(jī)可能可以達(dá)到 300-500次點(diǎn)擊。 這樣會(huì)很少嗎? 其實(shí)每分鐘這幾百人之中,只要有1個(gè)人購(gòu)買 1000 元的商品,一天可能就有百萬(wàn)營(yíng)業(yè)額了。 所以一般的電商不會(huì)去強(qiáng)調(diào)【高承載】,而是強(qiáng)調(diào)【轉(zhuǎn)換率】,自然沒(méi)必要使用太過(guò)強(qiáng)大的主機(jī)。
如果您可以了解以上的舉例,我們接下來(lái)就可以提供一些更詳細(xì)的說(shuō)明:
基礎(chǔ)知識(shí)一:?jiǎn)挝粫r(shí)間
網(wǎng)站的乘載量,要看「單位時(shí)間內(nèi)點(diǎn)擊次數(shù)」,而不是「同時(shí)多少人上線」。
狀況A: 新聞網(wǎng)站,同時(shí)3000人在線上,但每個(gè)人看文章五分鐘,才點(diǎn)下一篇文章,效能壓力很低。
換算一分鐘600次點(diǎn)擊,約每秒十次點(diǎn)擊。
狀況B: 但游戲、電商、活動(dòng)類網(wǎng)站,上線的人不停點(diǎn)擊、留言、購(gòu)買,那可能 500-1000 人,網(wǎng)站就有點(diǎn)撐不住了。
狀況C: 若數(shù)秒鐘內(nèi)大家搶著打開(kāi)同一個(gè)頁(yè)面,不停點(diǎn)擊,則 100 人左右網(wǎng)站就會(huì)爆掉。
用現(xiàn)實(shí)世界來(lái)比喻,一間書(shū)店可以有500人在逛,但一條走廊或一個(gè)結(jié)賬臺(tái)塞超過(guò)30人就會(huì)炸掉。
基礎(chǔ)知識(shí)二:交易與搶購(gòu)
案例一:
另一種狀況是搶購(gòu)或交易。 假設(shè)我在程序內(nèi)有一個(gè)地方存放商品,這個(gè)商品有一個(gè)數(shù)量是 1000。
現(xiàn)在有3000人要在同一秒鐘開(kāi)放搶購(gòu)這個(gè)商品,那么所有人要購(gòu)買時(shí)都會(huì)進(jìn)行以下檢查動(dòng)作:
系統(tǒng)去檢查商品存在
系統(tǒng)去檢查商品庫(kù)存不為0
系統(tǒng)鎖住一個(gè)商品,讓這個(gè)商品等待結(jié)賬
如果結(jié)賬成功,正式扣掉商品庫(kù)存 -1
如果結(jié)賬失敗,把這個(gè)商品庫(kù)存是放給其他人搶購(gòu)
從以上可以看到,3000人都在搶一個(gè)商品的數(shù)量計(jì)算。 而且有鎖住等待結(jié)賬的時(shí)間差,再加上物理上,這個(gè)數(shù)字是存在硬盤(pán)的某一個(gè)位置,所有人搶著在硬盤(pán)某一個(gè)位置讀取與寫(xiě)入資料,超出物理極限。
結(jié)果:除了前幾十人運(yùn)氣好結(jié)賬成功,后面所有人鎖住互卡,一個(gè)人都買不到。 主機(jī)買再貴都沒(méi)用,因?yàn)槎荚趽屚粋€(gè)物理位置,只有分布式系統(tǒng)與排隊(duì)機(jī)制才能解決。 但這兩者都是非常昂貴的,后面會(huì)再介紹到。
案例二:
一家老牌拉面店,大排長(zhǎng)龍,店內(nèi)有三十個(gè)座位。
如果我們一次開(kāi)放三百人進(jìn)店內(nèi),店里塞爆沒(méi)位子做,一個(gè)人都吃不到,老板也沒(méi)辦法煮面。
可行作法:所有人要么事前預(yù)約,要么現(xiàn)場(chǎng)拿號(hào)碼牌叫號(hào)排隊(duì),或者號(hào)碼牌會(huì)直接規(guī)定用餐時(shí)間幾點(diǎn)到幾點(diǎn),店內(nèi)就是一次服務(wù)三十人。 最后一整天可能有一千人可以成功吃到拉面,剩下的明天請(qǐng)?jiān)纭?br /> 這個(gè)案例,講的就是【排隊(duì)機(jī)制】。 無(wú)論如何,您都不該讓「所有」用戶在同一時(shí)間搶購(gòu)。 應(yīng)該要讓人潮陸續(xù)慢慢進(jìn)場(chǎng),先到者先買,這樣才能夠有效消化流量。
排隊(duì)機(jī)制
至于排隊(duì)機(jī)制要如何建立,假設(shè)是大型公司如 Amazon ,可以雇用工程師自己制作。 但一般小電商不可能負(fù)擔(dān)的起幾千萬(wàn)或幾億的云架構(gòu)成本,畢竟這個(gè)排隊(duì)系統(tǒng)本身就要扛大量的負(fù)載。
所以中小型電商大多是靠外掛排隊(duì)機(jī)制解決,電商網(wǎng)站先建立好搶購(gòu)頁(yè)面,但不要發(fā)布網(wǎng)址。 將這個(gè)網(wǎng)址包在排隊(duì)機(jī)制提供的替代網(wǎng)址中,將這個(gè)替代網(wǎng)址發(fā)給網(wǎng)友們。 當(dāng)搶購(gòu)開(kāi)始時(shí),網(wǎng)友大批進(jìn)入該網(wǎng)址,一開(kāi)始人數(shù)不夠多時(shí),替代網(wǎng)址會(huì)放行網(wǎng)友進(jìn)入網(wǎng)站購(gòu)買商品。 但一旦偵測(cè)到人潮超過(guò)您設(shè)定的最高值,就開(kāi)始鎖住頁(yè)面,后續(xù)的人要等前面的人離開(kāi)后,才能進(jìn)入網(wǎng)站。 這樣就讓網(wǎng)站有了先來(lái)后到的機(jī)制,大家就可以依照順序購(gòu)買商品了。
經(jīng)過(guò)以上介紹,希望有幫助您理解網(wǎng)站承載量的計(jì)算方式,以及如何善用排隊(duì)機(jī)制來(lái)支撐大流量營(yíng)銷活動(dòng)。
本文地址:http://cdrpkj.cn//article/2022/1130/31494.html