云計算的彈性、便捷、低成本被越來越多的用戶所認可,除了IT基礎設施投入的減少,還包括用戶的業務部署效率的顯著提升,將核心業務搬上云成為越來越多用戶的選擇。
存儲:云計算的性能瓶頸
因為涉及大量的數據存取,且數據存儲是獲得云計算一切便利的基礎,存儲性能直接決定用戶是否將其核心業務搬到云上以及能否通過云計算開展業務。普遍來看,硬件存儲和陣列占據著企業數據中心成本的98%;同時,數據中心的最大負荷當中有50%主要是來源于I/O性能,對存儲的要求自然很高。許多云計算服務商或企業自身的數據中心,都把提升設備的性能作為非常重要的手段。
實際上,單向地提升設備的性能不僅是浪費成本,對效率而言也并不是個好的方法;相較于不遺余力地增加CDN節點、提升帶寬等,長時間來業界并未注意到云計算中存儲性能的內在影響。隨著大數據的理念和技術的快速發展,近年來業界才發覺數據的內部差異,如冷數據和熱數據的區別。一方面許多數據的被訪問量很小,甚至“結了冰”;而同時一些數據,如證劵交易、實時航空預定、搜索引擎等I/O密集型應用中,數據訪問量大,熱得“發燙”,對硬件的要求往往很高,存儲環節非常重要,存儲系統的I/O吞吐量瓶頸成了關系到業務能否開展所必須攻克的難題。
存儲性能的關鍵:IOPS
大部分人對存儲的認知限于存儲的容量和傳輸速度,但影響存儲性能的因素顯然要復雜得多。
存儲類似于A-B間的運輸:A不定時地向有倉庫的B發貨(寫IO)或取貨(讀IO),A-B之間運輸貨物量的多少由包括路程距離、運輸車輛種類(跑車裝貨量遠不上大卡車)、運輸車輛數量、B倉庫容量及存取貨效率等多種因素影響,相同的公路長度及時間內,10輛大卡車肯定比10輛小轎車運輸的貨物數量要多得多,但是運輸次數則少得多。用存儲性能的幾個基本概念來描述,則是:
1.塊大小(block size):主機每次從存儲側讀取數據塊的大小,一般以KB為單位。如Mysql以8KB讀寫塊大小為主、Oracle以16KB讀寫塊大小為主、Mongodb以4KB讀寫塊大小為主;不同的業務應用,其讀寫塊大小有較大的差異。不同的塊大小,類似于不同的運輸車輛類型。
2.隊列深度(queue depth):主機每次向存儲發送I/O讀寫操作的并發數。通常情況下,硬盤有個隊列存放正在等待處理的I/O請求,當前正在處理的I/O操作完成后,從隊列中取一個I/O請求來執行I/O操作;隊列深度越大,越可以讓硬盤不斷工作,減少硬盤的空閑時間,隊列深度越大,I/O性能越好。隊列深度,類似于運輸貨物車輛的數量,顯然,多輛車運輸的貨物量肯定大于一輛車運輸的貨物量。
3.同/異步I/O:同步I/O時,主機每次向存儲發送一個I/O請求然后進入等待狀態,主機收到響應后再發送下一個I/O請求;異步I/O時,主機每次向存儲發送多個I/O請求。同步I/O類似于每次只有一輛車運輸貨物,等車輛回來后再發下一輛車;異步I/O類似于每次派多輛車前往倉庫運輸貨物。
4.IOPS(I/O Per Second):主機每秒從存儲側存取數據的I/O次數;IOPS越大表示存儲性能越好,同時IOPS受多種因素影響,比如塊大小、隊列深度、同/異步I/O等。IOPS相當于單位時間內車輛運輸的次數;顯然,速度快的跑車相比速度慢的大卡車在單位時間內運輸的次數要多得多。
5.BPS(Bandwidth Per Second):主機每秒從存儲側存取數據量的大小,通常以MBps為單位,BPS=塊大小*IOPS;同理,BPS受塊大小、隊列深度、同/異步I/O等因素影響。
6.時延(latency):主機每次從存儲側存取數據的平均時間,通常以毫秒(ms)為單位。在相同的網絡條件下,小的block size相比大的block size完成一次I/O操作,所需的時間肯定要小得多;如果是多并發的I/O訪問,時延還與存儲側處理I/O請求的響應速度有關,不同硬件的I/O響應時間不同。類似于從A地同時派10輛車往B地取貨,由于B地倉庫只能串行工作,一輛車裝完貨后才能裝下一輛,由于不同車所能裝的貨物量不同,因此不同車裝貨所需的時間也不同,這10輛車取完貨所需要的每車平均時間肯定大于單輛車取完貨的時間。
由于塊大小、同/異步IO、并發度往往是業務應用本身特點決定的,存儲性能的提升要從主機與存儲的網絡通道條件、存儲側并行處理I/O請求的效率、主機與存儲之間的I/O路徑長度等方面做優化,最終反映在IOPS這一關鍵指標上。
SSD云盤:快速進入云計算的精靈
隨著數據的爆發性增長,數據的采集、存儲、分析、應用等能力已引起各大企業的持續深耕。目前市場上常見有本地盤、普通云盤、高效云盤、SSD云盤等幾種存儲方式,但其中差別非常大。一個普通的7200轉的家用HDD盤的IOPS通常在100以內,采用RAID技術,無法避免單臺物理機宕機導致的數據丟失風險。SSD的IOPS則能達到上萬,往往采用分布式三副本機制,保障高性能的同時,實現高可靠性。
近日,騰訊云推出一款超高性能的SSD云盤,高達24000的隨機IOPS,不僅是普通本地盤的8倍、普通云盤的6.9倍,更是將去年6月阿里云公測的SSD云盤整整提升了20%,一舉刷新業界標準。基于全SSD存儲介質、CBS分布式架構等技術,騰訊云SSD云盤的最大容量達到4000G,吞吐量的最大值提升至260MB/s。
應用場景上,在PostgreSQL、MySQL、Oracle等中大型關系數據庫應用、對數據可靠性要求高的I/O密集型核心業務系統中,尤其是大型游戲類網站的游戲高峰期,電商類網站購物狂歡節等高并發狀況,騰訊云SSD云盤能有效避免加載延時、歷史數據無法正常顯示等問題。在Mysql壓力測試中,TPS可達1616、QPS達29000,單盤足以支撐每秒上萬人的在線同時交易。在HDFS測試中,模擬離線數據分析,1.5TB數據,5塊普通云盤提供500MB/s的讀取速度,50分鐘讀取到內存,而使用SSD云盤,可在25分鐘內完成。此外,其三副本機制,實時落盤持久化,無斷電丟失數據、單點風險,可靠性達到99.999999%。
SSD云盤在存儲市場上正獲得快速的認可。據Gartner2015年全球企業級存儲市場分析顯示,到2020年,SSD的出貨量將達到3.22億塊,市場份額將從16年的18.9%提升至40%。
隨著用戶高并發的場景變得越來越普遍,刷新存儲標準的騰訊云SSD云盤,可能將這場IOPS的戰爭帶到更為激烈的層次,未來云廠商之間的激烈競爭還會曠日持久,在存儲、計算、網絡、安全等各個領域的火拼仍舊硝煙四起。
備注:騰訊云SSD云盤IOPS的Fio測試環境為:iodepth=64,bs=4,ioengine=libaio,此外本文是將行業放在同樣的測試環境下進行比較。