服務熱線
0755-83647532
發(fā)表日期:2017-03-27 文章編輯:管理員 閱讀次數(shù):
編者注:本文介紹的高性能本地存儲,應該沒有針對可靠性方面的設計,因為在數(shù)據(jù)庫層面有復制做為保護手段。
紅包是最近興起的全民參與的活動,2017年新春紅包在參與人數(shù)和業(yè)務峰值上都到達了歷史新高,其中紅包除夕開獎峰值達到90W/s。在云棲社區(qū)2017紅包技術峰會上,阿里云系統(tǒng)和塊存儲負責人、資深專家馬濤從高性能本地存儲架構設計、高性能本地存儲要點分享、高性能本地存儲性能數(shù)據(jù)等方面分享了阿里云在高性能本地存儲方面的實戰(zhàn)經(jīng)驗。
以下內容根據(jù)現(xiàn)場分享和幻燈片整理而成。
支付寶紅包的大致業(yè)務架構包括單元化部署、統(tǒng)一接入、網(wǎng)關、DAO、數(shù)據(jù)庫以及在線/離線數(shù)據(jù)處理,整體流程很長。其中數(shù)據(jù)庫在整理的交易鏈路中起到承上啟下的作用。在紅包業(yè)務中,數(shù)據(jù)庫具有三大特點:
(1)峰值壓力大。除夕夜開獎峰值達到90W/s,但這僅僅是從業(yè)務層面考慮,由于業(yè)務對數(shù)據(jù)庫不僅僅是一次事務的壓力,所以開獎峰值時數(shù)據(jù)庫面臨的壓力可達百萬之多。
(2)延遲要求苛刻。數(shù)據(jù)庫單位時間內能承受的事務是有嚴格要求的,數(shù)據(jù)庫延遲降低后,會大幅降低對數(shù)據(jù)庫數(shù)目的需求,進而降低所需物理機配置,對整體的業(yè)務壓力也會大幅度降低。
(3)自帶容災。對于大型互聯(lián)網(wǎng)公司,他們的數(shù)據(jù)庫業(yè)務實際上是有非常完善的容災機制,數(shù)據(jù)庫具備主從復制;業(yè)務層也會有本身的容災機制。從存儲來看,上層的容災業(yè)務做得很全面。
針對紅包業(yè)務,數(shù)據(jù)庫的需求可以概括為兩點:一是延遲要非常低,延遲要低于100us;二是IOPS一定要高,需要達到20W以上。
現(xiàn)有塊存儲產品
目前阿里提供了三種不同的塊存儲產品,分別是SSD云盤、高效云盤和普通云盤。三者詳細的對比如上圖所示,可以看到:三種塊存儲的產品都具有高可靠的優(yōu)點,它們的數(shù)據(jù)可靠性都達到了99.9999999%;它們的缺點也非常明顯,IOPS和延遲不達標,IOPS最高的SSD云盤也只有20000,延遲最低的SSD云盤也有500us之久,距離20w IOPS和100us延遲的要求還存在很大的差距,這就需要設計一款新的存儲產品來滿足雙十一以及紅包業(yè)務的要求。
因此,高性能本地存儲應運而生。
高性能本地存儲
高性能本地存儲的設計目標是為了滿足高性能數(shù)據(jù)庫的要求,設計要點一是超高的IOPS;另一點是超低延遲。
通用的云本地存儲常規(guī)架構如上圖所示。以MySQL數(shù)據(jù)庫為例,它通過POSIX API與云主機內核交互,云主機內核包括一個標準文件系統(tǒng)和標準的塊設備接口;云主機內核下面是云物理機內核,它自上而下由標準文件系統(tǒng)、標準塊設備接口、硬件驅動和硬件組成。當數(shù)據(jù)庫發(fā)起IO訪問時,要經(jīng)過7個模塊才能到達硬件;請求完成后,再經(jīng)過7個模塊才能返回給應用層,路徑相當之長。云主機內核和云物理機內核中都包括標準文件系統(tǒng)和塊設備層,也就是說同樣的模塊可能在云主機內跑了一遍,還需要在云物理機上再運行一遍,功能上重疊,實現(xiàn)方式上也基本類似;重疊的模塊導致請求訪問時的路徑很長,對于業(yè)務和數(shù)據(jù)庫性能造成的的直觀影響是延遲高、性能差。
因此,采用通用的云本地存儲常規(guī)架構是無法解決紅包業(yè)務的需求,也不能設計出高性能的存儲產品。那該如何將云本地存儲的性能發(fā)揮到極致呢?我們的切入點是高性能存儲架構。
上圖是高性能存儲架構,圖中左側是標準物理機情況下存儲性能達到極致的框架:它的層次比較少,數(shù)據(jù)庫經(jīng)過POSIX API直接就到標準文件系統(tǒng)、塊設備層、硬件驅動、硬件,請求所經(jīng)過的模塊比上文提到的云本地存儲常規(guī)架構少2-3個,性能也相對有所提升。
那么如何在云主機的環(huán)境下搭建一個類似物理機的環(huán)境呢?首先云主機的必要模塊是必須保留的,應該盡可能精簡云物理機內核中的模塊,進而達到性能的最佳值。如上圖右側所示,首先必須保留云主機內的標準文件系統(tǒng)和塊設備層,因為它們和業(yè)務數(shù)據(jù)庫是息息相關的,標準文件系統(tǒng)提供了標準的Open、Creat、Write之類的接口,如果省去該模塊,業(yè)務是無法適配這種修改的。
對用戶而言,云物理機內所有的修改都是透明的,因此在云物理機上只保留硬件驅動,從而達到最佳性能。
高性能本地存儲關鍵組件
在云主機內,標準文件系統(tǒng)是不能變化的,因為它是存儲與數(shù)據(jù)庫、業(yè)務交互的地方。因此,想要進行性能優(yōu)化,只能考慮在塊設備層、硬件驅動、硬件三個模塊入手加速本地存儲的性能。
經(jīng)過一系列的調研與研發(fā)測試,最終在塊設備層使用了標準virtio blk驅動;硬件驅動使用了SPDK工具集;硬件使用了NVMe SSD。下面對這三個模塊進行詳細的解讀與分析。
Virtio-blk
利用Virtio blk可以實現(xiàn)云主機和云物理機之間的高性能數(shù)據(jù)交互。Virtio提供了半虛擬化的接口,所謂半虛擬化就是在虛擬機和物理機之間通過某種方式(修改了虛擬機某些接口),從而使得虛擬機和物理機之間實現(xiàn)高速傳輸,性能比傳統(tǒng)的全虛擬化有所提高。
Virtio blk是標準塊設備接口,通過塊設備接口可以對塊設備進行格式化、分區(qū)、創(chuàng)建文件系統(tǒng)等標準操作,對用戶完全透明,數(shù)據(jù)庫無需任何更改。Virtio blk另一個優(yōu)點是采用了Virtio協(xié)議,通過共享環(huán)交換數(shù)據(jù)。在上圖中,藍色部分是虛擬機,紅色部分是物理機。虛擬機通過Virtio Front End將數(shù)據(jù)通過Virtio Ring傳遞到后端的Virtio Back End;Virtio Back End將這些數(shù)據(jù)處理后再回傳給Virtio Front End,完成了一次數(shù)據(jù)的交互。
SPDK
除了Virtio blk之外,SPDK是另一個重要的組件。SPDK全稱是Storage Performance Development Kit,它是一組用來編寫高性能、高擴展性的用戶態(tài)存儲應用的工具集。
相比于SPDK,DPDK可能更為人知,它主要是為了解決網(wǎng)絡方面的問題。SPDK在很多模塊上是與DPDK共用的,它的核心觀點是通過用戶態(tài)協(xié)議加無鎖設計加輪詢機制達到高性能:
(1)用戶態(tài)協(xié)議是指SPDK實現(xiàn)了用戶NVMe協(xié)議,讓用戶可以在旁路內核的情況下去訪問設備;其缺點是不支持posix API、不支持標準的文件系統(tǒng),也沒有標準的設備支持,應用性較差。
(2)無鎖設計,對于高性能編程而言,無鎖設計都是核心的思想,此次不再展開。
(3)輪詢機制,SPDK提供了Polling Mode ,它摒棄了內核中常用的中斷這類的機制,消除了中斷的影響,提高了整體性能。
NVMe SSD
NVMe SSD有兩個核心點:首先SSD是PCI-E的SSD,本身的訪問速度是非??斓模徊捎肗VMe之后,速度會更快,NVMe是用來代替SCSI的新協(xié)議,它具有高帶寬、低延遲的特點,比SCSI協(xié)議更簡單高效,提高了系統(tǒng)整體的性能。
數(shù)據(jù)鏈路
高性能本地云儲存的數(shù)據(jù)鏈路如上圖所示,在云主機中,核心數(shù)據(jù)庫、POSIX API和標準文件系統(tǒng)保持不變。云數(shù)據(jù)庫通過標準的POSIX API 訪問標準文件系統(tǒng);標準文件系統(tǒng)通過Virtio-Blk和SPDK用戶態(tài)驅動直接交互,在SPDK用戶態(tài)驅動中再與NVMe SSD交互,減少了數(shù)據(jù)鏈路的長度,同時提高了IO性能。
延遲分布
高性能本地云儲存搭建之后,我們使用了fio磁盤測試工具在CentOS7上對通用虛擬化架構本地盤和阿里云高性能本地存儲的隨機IO平均延遲進行了對比測試。測試時塊設備IO調度器均設置為noop,測試參數(shù)為--direct=1--bs=4k--iodepth=1--numjobs=1。
從上圖可以看出,在隨機讀兩方面,阿里云高IO本地盤延遲只有70us左右,而通用虛擬化架構本地盤延遲在130us左右;隨機寫方面,阿里云高IO本地盤的延遲只有30us左右;通用虛擬化架構本地盤延遲在60us左右。
數(shù)據(jù)庫性能對比
上圖是新舊數(shù)據(jù)庫Index-Update性能對比,可以看到:在舊數(shù)據(jù)庫實例的情況下,TPS只有14242.65、RT為8.21ms;新數(shù)據(jù)庫實例下,TPS可以達到26969.81、RT為1.7ms,整體性能大幅度提升。
釋放紅包技術福利,即將在公有云上線
通過延遲分布和數(shù)據(jù)庫性能的對比,可以看出高本地云存儲對性能提升起到了很大的作用,在紅包活動中發(fā)揮了很大的作用。在完成雙十一及紅包活動之后,阿里云希望將高性能本地云存儲技術推廣給其他用戶使用。因此,在今年2月底,高性能本地云存儲在公共云上線,它的技術架構與支撐支付寶紅包的技術架構相同:采用NVMe SSD+SPDK技術,也是全球首家采用該技術的高性能本地盤。
本地盤2.0性能非常好,容量為3TB、IOPS為50萬、延遲為50us、帶寬為4GB。具體參數(shù)如下表所示:
可以看出,最優(yōu)產品讀寫IOPS單盤可達24000;讀帶寬達2GBps;寫帶寬為1.2GBps。
高IO本地存儲實例
有了本地盤作為基礎,如果想要實現(xiàn)高性能本地存儲實例,還需要在計算性能、存儲IO性能、網(wǎng)絡性能上進行相應地提升:
(1)為了保證計算性能穩(wěn)定,采用了Intel Xeon E5-2682 v4(Broadwell)處理器,主頻為2.5GHz,DDR4內存。
(2)為了保證存儲IO性能穩(wěn)定,采用了基于NVMe SSD和SPDK技術,提供高達數(shù)十萬隨機IO讀寫能力的同時,保持在us級別的時延水平。
(3)網(wǎng)絡性能方面,實例網(wǎng)絡性能與計算規(guī)格相對應(實例計算規(guī)格越大則網(wǎng)絡性能越強)。
綜上所述,將SPDK與NVMe SSD技術結合起來,能夠讓本地盤接近或類似物理機的性能,在雙十一以及新春紅包這類峰值壓力很大的場景下,性能依舊很好。
關于分享者:
馬濤,花名伯瑜,阿里云系統(tǒng)和塊存儲負責人、資深專家、國內知名Linux內核研發(fā)人員,10年以上操作系統(tǒng)以及存儲研發(fā)經(jīng)驗,在塊存儲,文件系統(tǒng)等領域為Linux內核主線做出了卓越的貢獻,在Linux內核主線有超過300個提交,同時對分布式文件系統(tǒng),分布式存儲等領域也有多年深入的研究。目前目前帶領團隊負責阿里巴巴Linux內核以及分布式塊存儲等相關的研發(fā)工作。
文章摘自云棲社區(qū)
歡迎聯(lián)系寶通集團咨詢英特爾產品信息
寶通集團聯(lián)系方式
咨詢熱線:400-830-0107
寶通官網(wǎng):www.bjrongxin.com
客戶垂詢郵箱:Customer@ex-channel.com
客戶垂詢QQ:1305742380
地址:深圳市福田區(qū)深南大道1006號國際創(chuàng)新中心C座11樓
郵編:518026