- 相關(guān)推薦
創(chuàng)業(yè)者說:項目需要多少服務(wù)器之用戶訪問模型
創(chuàng)業(yè)是一個永恒的話題,本文分享“3N技術(shù)創(chuàng)投”董事長兼創(chuàng)始人、常盈網(wǎng)絡(luò)創(chuàng)始人、一塊去旅游網(wǎng)創(chuàng)始人兼CTO梁劍坤先生在創(chuàng)業(yè)過程中的技術(shù)心得,為《創(chuàng)業(yè)者說:我這個項目需要多少臺服務(wù)器?》的技術(shù)干貨分享的第2篇,重點講的是“用戶訪問模型”問題,供大家參考(技術(shù)大牛們可以根據(jù)自己的專業(yè)能力,選擇忽略)。
我這個項目需要多少臺服務(wù)器?這是我過去多年經(jīng)常被問的一個問題,跟著這個問題一起來的,其實還有另外三個問題:1.需要多大硬盤存儲容量才夠?2.需要占用多少網(wǎng)絡(luò)帶寬?3.當用戶不斷增多,這個系統(tǒng)以后要怎么擴展?
硬盤容量的問題上期已經(jīng)講過了。這次開始進入核心的主題:到底需要多少臺服務(wù)器?地球人都知道,需要多少臺服務(wù)器是和用戶數(shù)/訪問量密切相關(guān)的。如果只有很少人訪問你的系統(tǒng),一臺服務(wù)器肯定是夠的(這不是廢話嗎)。關(guān)鍵的問題是:一臺服務(wù)器到底能支撐多少用戶?
一、用戶訪問模型
在回答這個問題之前,必須先建立“用戶訪問模型”。同樣多的用戶數(shù),如果這些用戶平均1 個月只來訪問1 次,那么實際上服務(wù)器沒多少壓力。但如果這些用戶平均每幾分鐘都來訪問1 次,顯然要求就不一樣了。所以,實際上“一臺服務(wù)器到底能支撐多少用戶”在不同的項目里,答案都是不一樣的,因為每個項目的用戶訪問頻率都不同,簡單說就是“用戶訪問模型”不同。
1、日活用戶量
“用戶訪問模型”里的第一個變量,通?梢院唵伪磉_為“平均每天的活躍用戶數(shù)”,簡稱“日活用戶數(shù)”,意思就是每天來訪問你這個系統(tǒng)的平均用戶數(shù),到底是多少個。“日活用戶數(shù)”相同的系統(tǒng)還不能說明其“用戶訪問模型”就是相同的。不同的系統(tǒng),用戶每天訪問的時間區(qū)間、時間段長度是不一樣的。比如閱讀類的應(yīng)用,可能碎片化分布在除了 睡眠時段的每個小時里;而外賣訂餐類的應(yīng)用,就只有中午、傍晚兩個高峰時段加起來可能 不到3‐4 個小時有訪客。于是,外賣訂餐類的應(yīng)用,同樣的“日活用戶數(shù)”,在高峰時間對 服務(wù)器造成的訪問壓力可能要大于閱讀類的應(yīng)用,因為用戶都擠在一起了。
2、每天高峰時間段長度
為了描述用戶集中訪問的程度,我們通常簡單地用“每天高峰時間段長度”來定義。例如,我們可以假設(shè)“每天的訪問量都集中發(fā)生在4 小時內(nèi)”,或“每天的訪問量都集中發(fā)生在5分鐘內(nèi)”(現(xiàn)場投票往往就是這樣的)。
3、用戶交互次數(shù)
不同的應(yīng)用,用戶的每次訪問對系統(tǒng)所造成的壓力,其實也是不同的。例如閱讀類的應(yīng)用,用戶在打開一篇文章的時候會對系統(tǒng)發(fā)出一組訪問請求(若干圖片文字的組合),然后用戶在接下來的若干分鐘里,就自己去閱讀這篇文章了,閱讀期間不會對系統(tǒng)產(chǎn)生任何新的負載(假定這個網(wǎng)頁不會自動加載個什么動態(tài)廣告之類的玩意)。而電商類的應(yīng)用,可能用戶要不停地在不同商品頁面之間來回切換比較價格、規(guī)格等信息,平均可能瀏覽幾十上百個商品詳情頁面才會下一張訂單。于是,同樣1 個用戶在線使用相同的時間長度,不同的應(yīng)用會有不同的“用戶交互次數(shù)”,我們在“用戶訪問模型”中定義為“平均每次訪問的交互次數(shù)”。
4、平均每次請求響應(yīng)時間
同樣1 次交互操作,不同的應(yīng)用可能產(chǎn)生的負載強度也是不同的。還是以閱讀為例,一篇文章如果包含10 個圖片,打開這篇文章所需要的服務(wù)器請求次數(shù)可能就是11(文章本身+10 張圖片,忽略可能有的其他特效腳本或廣告)。而對監(jiān)測健康狀況的應(yīng)用來說,可能每分鐘才 會連接服務(wù)器1 次,把過去1 分鐘內(nèi)檢測到的呼吸、心跳等信息上傳到服務(wù)器。我們用“平 均每次交互所需請求次數(shù)”來定義這種差異。最后,同樣是一次請求,不同的應(yīng)用對響應(yīng)時間會有所差異。動作類游戲應(yīng)用可能要求響應(yīng)時間在毫秒級,而普通商品查詢的應(yīng)用可以容忍的響應(yīng)時間則可能在3‐7 秒之間。我們把這 個差異定義為“平均每次請求響應(yīng)時間”。
二、服務(wù)器并發(fā)請求數(shù)
有了上述變量的定義和評估之后,我們可以計算出“服務(wù)器并發(fā)請求數(shù)”:服務(wù)器并發(fā)請求數(shù)=日活躍用戶數(shù)*平均每次訪問的交互次數(shù)*平均每次交互所需請求次數(shù)/(每天高峰時段小時數(shù)*3600)*平均每次請求響應(yīng)時間(秒)
計算得到的結(jié)果,可以簡單地用每1000 個“服務(wù)器并發(fā)請求數(shù)”需要1 臺服務(wù)器來估算所需服務(wù)器的數(shù)量。這里的“1000”只是一個很含糊的參考值,實際上這和具體的“程序猿” 寫程序的水平很有關(guān)系,也和具體部署系統(tǒng)軟件的運維“攻城獅”的經(jīng)驗很有關(guān)系。如果找Jeikul 來寫程序并且實施,這個數(shù)字可能可以到3000 以上(吹牛不用負責的吧?);如果找Jeikul為了趕項目工期而勉強招聘的實習生來寫程序并且實施的話,這個數(shù)字可能只有300(是不是很想吐血?)
另外,服務(wù)器的強勁程度也很有影響,我們總不能要求一臺1 萬塊錢單CPU 傳統(tǒng)機械硬盤的服務(wù)器跟一臺5 萬塊錢N 多CPU/內(nèi)存并且裝了SSD 硬盤的服務(wù)器有相同的表現(xiàn)吧?“1000”這個數(shù)字可以簡單看作是一臺價格大概2 萬元左右、雙CPU 共8 核(在產(chǎn)型號)、16/32G 內(nèi)存、10000 轉(zhuǎn)以上機械硬盤配置的普通服務(wù)器的表現(xiàn)。
總結(jié)
上述“用戶訪問模型”其實只是很抽象的概括,具體到不同的應(yīng)用其實要引入很多具體不同的變量,既然是創(chuàng)業(yè),必然是定制開發(fā);既然是定制開發(fā),就不可能有統(tǒng)一的公式,必須具 體問題具體分析。
【創(chuàng)業(yè)者說:項目需要多少服務(wù)器之用戶訪問模型】相關(guān)文章:
跳槽、行業(yè)前景、模型等創(chuàng)業(yè)者想問的,鄧力這樣說02-27
創(chuàng)業(yè)者需要“創(chuàng)業(yè)者大腦”03-26
創(chuàng)業(yè)者如何真正讀懂用戶需求03-16
創(chuàng)業(yè)者的人格素質(zhì)模型03-26