搭一個(gè)10萬(wàn)并發(fā)的秒殺系統(tǒng)到底需要多少服務(wù)器

以下都是作者的假想,未經(jīng)實(shí)戰(zhàn),僅作參考。

一些個(gè)假定或者說(shuō)經(jīng)驗(yàn)值:
這個(gè)系統(tǒng)業(yè)務(wù)邏輯假定并不復(fù)雜:用戶(hù)進(jìn)來(lái)就是查一下某種公共資源的庫(kù)存、然后下訂單預(yù)約,完事兒。每個(gè)用戶(hù)每個(gè)手機(jī)號(hào)只能預(yù)約一次。

假設(shè)同時(shí)10萬(wàn)人使用,而且使用頻度不低。一方面不會(huì)每個(gè)用戶(hù)一直不停的操作,另一方面一個(gè)操作可能會(huì)產(chǎn)生多個(gè)請(qǐng)求并發(fā);所以這里只是估計(jì)。我們假設(shè)平均一個(gè)用戶(hù)操作觸發(fā)1個(gè)請(qǐng)求,然后每秒10萬(wàn)用戶(hù)中有5萬(wàn)多人同時(shí)進(jìn)行了操作。這樣真正給到系統(tǒng)的并發(fā)是5萬(wàn)/秒。

我們看看按照上面的設(shè)想,這個(gè)10萬(wàn)級(jí)別秒殺系統(tǒng)需要準(zhǔn)備些什么?

主機(jī): 6臺(tái),8c16g, 其中1臺(tái)部署nginx、 5臺(tái)部署應(yīng)用服務(wù)器;
說(shuō)明,這里按照1個(gè)nginx處理5萬(wàn)/秒的請(qǐng)求,而每個(gè)應(yīng)用服務(wù)器負(fù)責(zé)處理1萬(wàn)/秒的請(qǐng)求(在nginx與每個(gè)應(yīng)用服務(wù)器之間維持100個(gè)連接,每個(gè)請(qǐng)求耗時(shí)10ms、則1連接1秒可處理100請(qǐng)求,100連接1秒可處理1萬(wàn)請(qǐng)求。)。關(guān)于硬件配置,參考了https://kiswo.com/archives/349 ,這篇文章。怕不夠,還增強(qiáng)了一下配置。

網(wǎng)絡(luò):每個(gè)請(qǐng)求按照10KB算、每秒5萬(wàn)個(gè)請(qǐng)求488MB/s, 3.9Gbps的帶寬。4個(gè)1Gbps帶寬的網(wǎng)絡(luò)設(shè)備做接入。實(shí)際這么搞肯定不行,圖片和js什么的要使用cdn以及客戶(hù)端緩存,就算是從服務(wù)端拿的json報(bào)文、如果是每次用戶(hù)只需要從后臺(tái)拉一次的話要使用客戶(hù)端緩存、下次直接訪問(wèn)客戶(hù)端本地緩存就行了。一般服務(wù)器外網(wǎng)帶寬也就150MB的居多、1Gbps,稱(chēng)為千兆網(wǎng)卡。

數(shù)據(jù)庫(kù):sql優(yōu)化得當(dāng),并且添加應(yīng)用層緩存,那么假設(shè)20%的請(qǐng)求真正落到數(shù)據(jù)庫(kù)。 1萬(wàn)的綜合tps。(跟sql和事務(wù)處理邏輯有關(guān),但是1萬(wàn)tps沒(méi)啥應(yīng)該感到吃驚的,數(shù)據(jù)庫(kù)已經(jīng)不是千把tps就會(huì)壓垮的時(shí)代了。具體可見(jiàn) https://zhuanlan.zhihu.com/p/339996719 猜測(cè)測(cè)試的數(shù)據(jù)庫(kù)是16核64G以上配置,阿里云rds這個(gè)配置的最大連接數(shù)給的是1萬(wàn)剛好、1年9萬(wàn)價(jià)格)。
btw,阿里云rds目前頂配mysql的配置是:
90核 720GB(獨(dú)占物理機(jī)) 1000GB (本地SSD盤(pán))
最大連接數(shù):150000 ; IOPS:140000
1臺(tái) 77萬(wàn)元/年

按照經(jīng)驗(yàn),我們?cè)O(shè)定一些個(gè)公式:
注冊(cè)用戶(hù)除以10 = 日活(這里指一般系統(tǒng)來(lái)說(shuō),微信這種太特殊,注冊(cè)用戶(hù)基本跟日活一個(gè)數(shù)量級(jí))
日活除以10 = 同時(shí)在線人數(shù) ,峰值=2*同時(shí)在線人數(shù)

我們認(rèn)為秒殺系統(tǒng)在線的用戶(hù)很大部分都會(huì)在活動(dòng)時(shí)段都會(huì)同時(shí)操作。一次用戶(hù)操作,我們假設(shè)會(huì)觸發(fā)2個(gè)請(qǐng)求。
綜上,10萬(wàn)并發(fā)可認(rèn)為是5萬(wàn)用戶(hù)同時(shí)操作,同時(shí)在線人數(shù)30萬(wàn)、即同時(shí)在線人數(shù)的三分之一。

那么5萬(wàn)并發(fā)意味著什么? 相當(dāng)于最高峰10萬(wàn)在線人數(shù)。

綜上、對(duì)10萬(wàn)級(jí)別的秒殺系統(tǒng)的接入層、服務(wù)層、數(shù)據(jù)庫(kù),網(wǎng)絡(luò)做了大概的一個(gè)空想。永遠(yuǎn)抱著學(xué)習(xí)的態(tài)度,歡迎指正。

擴(kuò)展閱讀:
如何設(shè)計(jì)一個(gè)億級(jí)消息量的IM系統(tǒng): https://xie.infoq.cn/article/19e95a78e2f5389588debfb1c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容