omniture

論云存儲(chǔ)服務(wù)性能評測的“正確姿勢”

2015-12-30 12:49 7597

上海2015年12月30日電 /美通社/ -- 最近,越來越多的第三方獨(dú)立機(jī)構(gòu)推出了云服務(wù)測試報(bào)告,這個(gè)現(xiàn)象讓眾多業(yè)內(nèi)人士感到喜憂參半。喜的是數(shù)據(jù)的大爆炸,企業(yè)的轉(zhuǎn)型意識(shí),互聯(lián)網(wǎng)的發(fā)展已經(jīng)讓云計(jì)算市場迅速進(jìn)入了紅海階段,人們對云的需求與依賴性越來越高。憂的是也有打著云服務(wù)獨(dú)立測試的旗號讓一些并不真實(shí)的數(shù)據(jù)展現(xiàn)在受眾面前的事情發(fā)生。

云存儲(chǔ)服務(wù)性能評測示意圖
云存儲(chǔ)服務(wù)性能評測示意圖

進(jìn)入云服務(wù)領(lǐng)域四年了,七牛從云存儲(chǔ)做切入口,到目前已經(jīng)積累了數(shù)十萬用戶。在這里,將“如何更好地測試云存儲(chǔ)服務(wù)性能”分享出來,希望能讓更多的在選擇云和往云上遷移的企業(yè)獲益。

首先,普及一個(gè)基礎(chǔ)知識(shí):普遍認(rèn)為,在互聯(lián)網(wǎng)的世界里有三類不同的數(shù)據(jù):

  1. 結(jié)構(gòu)化數(shù)據(jù),也就是關(guān)系型數(shù)據(jù)。
  2. 日志類型的數(shù)據(jù),即記錄用戶行為軌跡的數(shù)據(jù)。
  3. 非結(jié)構(gòu)化數(shù)據(jù),也就是我們經(jīng)常使用和產(chǎn)生的文件類數(shù)據(jù),如圖片、音視頻數(shù)據(jù)等。

就目前來說,大家所接觸到的公有云存儲(chǔ)一般是針對第三類也就是非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ),除了存儲(chǔ)本身,也會(huì)提供數(shù)據(jù)加速(CDN)以及數(shù)據(jù)處理等服務(wù),七牛就是這樣。這里面,每一個(gè)子服務(wù)都會(huì)對應(yīng)相關(guān)的獨(dú)立測試,而本篇文章更多的是探討如何做好存儲(chǔ)本身的性能測試。

了解了基本概念,在測試前,還要理解典型的數(shù)據(jù)使用環(huán)境下的三個(gè)主要階段。

第一階段指數(shù)據(jù)從客戶端到存儲(chǔ)的服務(wù)端(服務(wù)入口),即上行階段。上行的表現(xiàn)一方面是由用戶的網(wǎng)絡(luò)質(zhì)量決定的,同時(shí)也與云存儲(chǔ)服務(wù)商上行節(jié)點(diǎn)的優(yōu)化策略有關(guān)。這時(shí),重要的是做好整體的網(wǎng)絡(luò)優(yōu)化,以及在軟件層面解決由于網(wǎng)絡(luò)不穩(wěn)而帶來的上行問題。例如,斷點(diǎn)續(xù)上傳,模式是分片并發(fā)上傳,是能很好地解決網(wǎng)絡(luò)不穩(wěn)的方法。因此,七牛在為“美拍”服務(wù)的時(shí)候,對方是非常典型的短視頻 UGC 場景,就充分用到了斷點(diǎn)續(xù)上傳的功能。此外,增加存儲(chǔ)節(jié)點(diǎn)和反向代理節(jié)點(diǎn)也可以優(yōu)化劣質(zhì)網(wǎng)絡(luò)環(huán)境下的用戶上行問題。上行這個(gè)展開了,也是一個(gè)獨(dú)立測試。

第二階段就主要依賴云存儲(chǔ)服務(wù)本身的性能表現(xiàn)。例如,在數(shù)據(jù)達(dá)到存儲(chǔ)入口之后,需要多久才能落地到磁盤;在取一個(gè)數(shù)據(jù)時(shí),數(shù)據(jù)要多久才能從磁盤到達(dá)存儲(chǔ)的出口等。這個(gè)階段的測試也是下文五個(gè)關(guān)鍵點(diǎn)中所主要描述的。

第三個(gè)階段指數(shù)據(jù)的下行階段。數(shù)據(jù)一般是由普通用戶來使用的,而從存儲(chǔ)邊緣到達(dá)客戶端的數(shù)據(jù)下行表現(xiàn)是由 CDN 決定的,因此這個(gè)階段的性能評測是典型的 CDN 性能評測,很多文章中均有詳細(xì)描述,這邊就不做具體描述了。

那么如何針對云存儲(chǔ)本身的性能表現(xiàn)做有效評測呢?以下分五個(gè)關(guān)鍵點(diǎn)來進(jìn)行闡述。

第一個(gè)關(guān)鍵點(diǎn):

保障測試機(jī)的性能。目前絕大多數(shù)云存儲(chǔ)服務(wù)的性能都不弱,因此,在測試時(shí),保障充足的帶寬是非常非常必要的,同時(shí),CPU 等資源也要確保充足。此外,如果是通過上傳小文件來進(jìn)行測試的話,則盡量從內(nèi)存生成小文件,而不是從磁盤生成,以免由于磁盤 IOPS 不夠,而影響測試的準(zhǔn)確性。而如果上傳的是大文件,那么較好不要受到測試機(jī)帶寬的限制。同理,如果是下載一個(gè)小文件,較好不要落磁盤,直接將其扔掉就好了,以避免磁盤成為性能瓶頸。

第二個(gè)關(guān)鍵點(diǎn):

將測試機(jī)與云存儲(chǔ)服務(wù)的距離控制在合理的范圍內(nèi)。機(jī)器離云存儲(chǔ)的距離是非常關(guān)鍵的,因?yàn)槿绻麅烧咧g的距離太大的話,跳數(shù)、丟包率、延遲等都會(huì)極大影響測試的效果。一般測試,通常會(huì)選擇在同一個(gè)供應(yīng)商同機(jī)房提供的虛擬機(jī)上來做云存儲(chǔ)性能測試,這樣不僅測試起來會(huì)比較方便,而且能確保測試結(jié)果準(zhǔn)確有效。

七牛的一個(gè)特殊情況為例,七牛目前對外是不提供虛擬機(jī)的,虛擬機(jī)的使用是要實(shí)名申請審批的,因此第三方獨(dú)立測試機(jī)構(gòu)在測試七牛時(shí),也希望能夠更好地確認(rèn)這一點(diǎn)。

第三個(gè)關(guān)鍵點(diǎn):

根據(jù)存儲(chǔ)數(shù)據(jù)的大小,關(guān)注相應(yīng)的測試指標(biāo)。通常都會(huì)選擇 Get(下載)和 Put(上傳)來測試云存儲(chǔ)本身的服務(wù)性能。這里面會(huì)考察響應(yīng)時(shí)間與 TPS(平均每秒處理的事務(wù)數(shù))。

因此推薦以實(shí)際用戶為基準(zhǔn)來考慮測試數(shù)據(jù)的大小。對于圖片數(shù)據(jù)來說,可以關(guān)注 50KB 和 2MB 兩個(gè)級別,主要因?yàn)橐话闶謾C(jī)拍照的圖片大小在 1MB 到 2MB 這個(gè)級別,這對圖片上行和下載原圖都比較關(guān)鍵。而 50KB 是比較常見的縮略圖的大小,也就是在網(wǎng)頁上展示的絕大部分圖片尺寸。此外網(wǎng)站上還會(huì)一些更小的圖片,如logo、圖標(biāo)等,但這類圖片基本上都是重復(fù)的,這樣 CDN 的緩存效率比較高,一般體驗(yàn)都不會(huì)差。而容易造成用戶體驗(yàn)差的,反而是那些每次大小都不一樣、每個(gè)頁面都不會(huì)重復(fù)的圖片,它們才是評估的關(guān)鍵。而如果是做短視頻產(chǎn)品,如常見的10秒的短視頻,文件大小通常是1-2MB,因此建議關(guān)注這個(gè)級別的上行和下行。如果是更長的視頻,也應(yīng)該關(guān)注相對應(yīng)的測試大小。

第四個(gè)關(guān)鍵點(diǎn):

測試數(shù)據(jù)的頭尾都是不能要的。在測試時(shí),一般要選取中間的數(shù)據(jù),因?yàn)樽铋_始的時(shí)候,由于程序啟動(dòng)或者其他干擾原因會(huì)導(dǎo)致性能不太穩(wěn)定,一般性能會(huì)差一些的。同時(shí),尾部的數(shù)據(jù)通常也需要去掉,比如使用多線程測試時(shí),各個(gè)線程結(jié)束的時(shí)間不一致,也會(huì)導(dǎo)致測試尾部的數(shù)據(jù)偏差較大。

第五個(gè)關(guān)鍵點(diǎn):

推薦對云存儲(chǔ)服務(wù)做一些高并發(fā)的測試,這樣可以考驗(yàn)云存儲(chǔ)供應(yīng)商的真實(shí)能力,即在處理高并發(fā)情況下的成功率。但做高并發(fā)測試時(shí),用比較傳統(tǒng)的 Java、Python 等語言不太合適,因?yàn)樵诰€程模型下它們的并發(fā)能力受系統(tǒng)能支撐的線程數(shù)限制,高并發(fā)的寫法又比較復(fù)雜。而用 Go、Erlang、Scala,Node.js 等語言則會(huì)方便不少。

由于國內(nèi)還沒有特別權(quán)威的第三方做獨(dú)立對比測試的機(jī)構(gòu),所以較好是自己來做測試,按照上面的方式,也很簡單。

此外,選擇云存儲(chǔ),除了上面談到的云存儲(chǔ)本身的性能,用戶也需要關(guān)注存儲(chǔ)的可用性以及性價(jià)比等方面。為了測試可用性,開發(fā)者可以預(yù)寫一個(gè)腳本,放在 crontab 里邊運(yùn)行一段時(shí)間,收集相關(guān)數(shù)據(jù)。目前,國內(nèi)有些云服務(wù)供應(yīng)商為了讓用戶能實(shí)時(shí)了解服務(wù)的可用性,從而更放心地使用云服務(wù),已推出系統(tǒng)健康狀態(tài)實(shí)時(shí)監(jiān)控服務(wù),例如在 status.qiniu.com 上就可以看到七牛的完整可用性紀(jì)錄以及關(guān)鍵性能指標(biāo)。此外,也要考察覆蓋度問題,不過覆蓋度問題一般由 CDN 提供支持,也有聽云這類比較易用的測試服務(wù)。

當(dāng)下,AWS、Azure 等海外云服務(wù)也已經(jīng)落地國內(nèi),他們在國內(nèi)通常也具備了以上測試條件,因此測試方式并無不同。

最后想說的是,到了今天,越來越多的企業(yè)在選擇云,基礎(chǔ)技術(shù)對用戶而言也越來越隱形,而以用戶的需求為中心,專注云服務(wù)的質(zhì)量才是廠商真正最需要做的。

作者簡介

李道兵,七牛首席架構(gòu)師。人稱道神,Debian Developer, iso-codes 等開源軟件維護(hù)員,原盛大云資深研究員。

消息來源:七牛云存儲(chǔ)
China-PRNewsire-300-300.png
全球TMT
微信公眾號“全球TMT”發(fā)布全球互聯(lián)網(wǎng)、科技、媒體、通訊企業(yè)的經(jīng)營動(dòng)態(tài)、財(cái)報(bào)信息、企業(yè)并購消息。掃描二維碼,立即訂閱!
collection