mongodb 海量圖片存儲_海量文檔系統(tǒng)_揭秘淘寶286億海量圖片存儲與處理架構(gòu)
本文關(guān)鍵詞:海量圖片存儲,由筆耕文化傳播整理發(fā)布。
揭秘淘寶286億海量圖片存儲與處理架構(gòu)
2010-09-01 00:00 it168網(wǎng)站原創(chuàng) 作者: 李雋 編輯: 李雋0購買
【IT168 專稿】8月27日下午,在IT168系統(tǒng)架構(gòu)師大會存儲與系統(tǒng)架構(gòu)分論壇上,淘寶網(wǎng)技術(shù)委員會主席,,淘寶網(wǎng)核心工程師章文嵩向我們詳細(xì)介紹了淘寶網(wǎng)圖片處理與存儲系統(tǒng)的架構(gòu)。章文嵩博士的演講日程包括了淘寶的整個系統(tǒng)架構(gòu)、淘寶圖片存儲系統(tǒng)架構(gòu),淘寶網(wǎng)獨(dú)立開發(fā)的TFS集群文件系統(tǒng),前端CDN系統(tǒng)以及淘寶網(wǎng)在節(jié)能服務(wù)器方面的應(yīng)用和探索。
解決海量并發(fā)小文件的系統(tǒng)噩夢
對于淘寶網(wǎng)這類型訪問量極高的電子交易網(wǎng)站來說,對圖片系統(tǒng)的要求和日常的照片分享完全不在一個級別。日常照片分享往往集中在幾個有限的親朋好友之間,訪問量不會特別高,而淘寶網(wǎng)商鋪中的商品照片,尤其是熱門商品,圖片的訪問流量其實(shí)是非常大的。而且對于賣家來說,圖片遠(yuǎn)勝于文字描述,因此賣家也格外看重圖片的顯示質(zhì)量、上傳時間、訪問速度等等問題。根據(jù)淘寶網(wǎng)的流量分析,整個淘寶網(wǎng)流量中,圖片的訪問流量會占到90%以上,而主站的網(wǎng)頁則占到不到10%。
淘寶網(wǎng)電子商城首頁截圖,淘寶網(wǎng)的后端系統(tǒng)上保存著286億多個圖片文件,淘寶網(wǎng)整體流量中,圖片的訪問流量要占到90%以上。且這些圖片平均大小為17.45KB,小于8K的圖片占整體圖片數(shù)量61%,整體系統(tǒng)容量的11%
與此同時,這些圖片的存儲與讀取還有一些頭疼的要求:例如,這些圖片要求根據(jù)不同的應(yīng)用位置,生成不同大小規(guī)格的縮略圖?紤]到多種不同的應(yīng)用場景以及改版的可能性,一張原圖有可能需要生成20多個不同尺寸規(guī)格的縮略圖。
淘寶整體圖片存儲系統(tǒng)容量1800TB(1.8PB),已經(jīng)占用空間990TB(約1PB)。保存的圖片文件數(shù)量達(dá)到286億多個,這些圖片文件包括根據(jù)原圖生成的縮略圖。平均圖片大小是17.45K;8K以下圖片占圖片數(shù)總量的61%,占存儲容量的11%。
這就給淘寶網(wǎng)的系統(tǒng)帶來了一個巨大的挑戰(zhàn),眾所周知,對于大多數(shù)系統(tǒng)來說,最頭疼的就是大規(guī)模的小文件存儲與讀取,因?yàn)榇蓬^需要頻繁的尋道和換道,因此在讀取上容易帶來較長的延時。在大量高并發(fā)訪問量的情況下,簡直就是系統(tǒng)的噩夢。
分析自主研發(fā)和商用系統(tǒng)的經(jīng)濟(jì)效益
淘寶網(wǎng)成立于2003年,在整個系統(tǒng)的構(gòu)建和規(guī)劃上也做過相當(dāng)多的嘗試和探索。
下圖是淘寶網(wǎng)2007年之前的圖片存儲系統(tǒng)。淘寶網(wǎng)之前一直采用的商用存儲系統(tǒng),應(yīng)用NetApp公司的文件存儲系統(tǒng)。隨著淘寶網(wǎng)的圖片文件數(shù)量以每年2倍(即原來3倍)的速度增長,淘寶網(wǎng)后端NetApp公司的存儲系統(tǒng)也從低端到高端不斷遷移,直至2006年,即時是NetApp公司最高端的產(chǎn)品也不能滿足淘寶網(wǎng)存儲的要求。
淘寶網(wǎng)2007年以前的圖片存儲系統(tǒng)架構(gòu)圖,由于淘寶網(wǎng)圖片速度已每年2倍的速度增長,商用系統(tǒng)已經(jīng)完全不能滿足其存儲需求,目前淘寶網(wǎng)采用自主研發(fā)的TFS集群文件系統(tǒng)來解決海量小圖片的讀取和訪問問題
章文嵩博士在這里總結(jié)了幾點(diǎn)商用存儲系統(tǒng)的局限和不足:
首先是商用的存儲系統(tǒng)沒有對小文件存儲和讀取的環(huán)境進(jìn)行有針對性的優(yōu)化;其次,文件數(shù)量大,網(wǎng)絡(luò)存儲設(shè)備無法支撐;另外,整個系統(tǒng)所連接的服務(wù)器也越來越多,網(wǎng)絡(luò)連接數(shù)已經(jīng)到達(dá)了網(wǎng)絡(luò)存儲設(shè)備的極限。此外,商用存儲系統(tǒng)擴(kuò)容成本高,10T的存儲容量需要幾百萬¥,而且存在單點(diǎn)故障,容災(zāi)和安全性無法得到很好的保證。
談到在商用系統(tǒng)和自主研發(fā)之間的經(jīng)濟(jì)效益對比,章文嵩博士列舉了以下幾點(diǎn)經(jīng)驗(yàn):
1.商用軟件很難滿足大規(guī)模系統(tǒng)的應(yīng)用需求,無論存儲還是CDN還是負(fù)載均衡,因?yàn)樵趶S商實(shí)驗(yàn)室端,很難實(shí)現(xiàn)如此大的數(shù)據(jù)規(guī)模測試。
2.研發(fā)過程中,將開源和自主開發(fā)相結(jié)合,會有更好的可控性,系統(tǒng)出問題了,完全可以從底層解決問題,系統(tǒng)擴(kuò)展性也更高。
自主研發(fā)和采用商用系統(tǒng)的經(jīng)濟(jì)效益對比
3.在一定規(guī)模效應(yīng)基礎(chǔ)上,研發(fā)的投入都是值得的。上圖是一個自主研發(fā)和購買商用系統(tǒng)的投入產(chǎn)出比對比,實(shí)際上,在上圖的交叉點(diǎn)左邊,購買商用系統(tǒng)都是更加實(shí)際和經(jīng)濟(jì)性更好的選擇,只有在規(guī)模超過交叉點(diǎn)的情況下,自主研發(fā)才能收到較好的經(jīng)濟(jì)效果,實(shí)際上,規(guī);_(dá)到如此程度的公司其實(shí)并不多,不過淘寶網(wǎng)已經(jīng)遠(yuǎn)遠(yuǎn)超過了交叉點(diǎn)。
4.自主研發(fā)的系統(tǒng)可在軟件和硬件多個層次不斷的優(yōu)化。
TFS 1.0版本的集群文件系統(tǒng)
從2006年開始,淘寶網(wǎng)決定自己開發(fā)一套針對海量小文件存儲難題的文件系統(tǒng),用于解決自身圖片存儲的難題。到2007年6月,TFS(淘寶文件系統(tǒng),Taobao File System)正式上線運(yùn)營。在生產(chǎn)環(huán)境中應(yīng)用的集群規(guī)模達(dá)到了200臺PC Server(146G*6 SAS 15K Raid5),文件數(shù)量達(dá)到上億級別;系統(tǒng)部署存儲容量: 140 TB;實(shí)際使用存儲容量: 50 TB;單臺支持隨機(jī)IOPS 200+,流量3MBps。
淘寶集群文件系統(tǒng)TFS 1.0第一版的邏輯架構(gòu),TFS最大的特點(diǎn)就是將一部分元數(shù)據(jù)隱藏到圖片的保存文件名上,大大簡化了元數(shù)據(jù),消除了管理節(jié)點(diǎn)對整體系統(tǒng)性能的制約,這一理念和目前業(yè)界流行的“對象存儲”較為類似。
圖為淘寶集群文件系統(tǒng)TFS 1.0第一版的邏輯架構(gòu):集群由一對Name Server和多臺Data Server構(gòu)成,Name Server的兩臺服務(wù)器互為雙機(jī),就是集群文件系統(tǒng)中管理節(jié)點(diǎn)的概念。
• 每個Data Server運(yùn)行在一臺普通的Linux主機(jī)上
• 以block文件的形式存放數(shù)據(jù)文件(一般64M一個block)
• block存多份保證數(shù)據(jù)安全
• 利用ext3文件系統(tǒng)存放數(shù)據(jù)文件
• 磁盤raid5做數(shù)據(jù)冗余
• 文件名內(nèi)置元數(shù)據(jù)信息,用戶自己保存TFS文件名與實(shí)際文件的對照關(guān)系–使得元數(shù)據(jù)量特別小。
淘寶TFS文件系統(tǒng)在核心設(shè)計上最大的取巧的地方就在,傳統(tǒng)的集群系統(tǒng)里面元數(shù)據(jù)只有1份,通常由管理節(jié)點(diǎn)來管理,因而很容易成為瓶頸。而對于淘寶網(wǎng)的用戶來說,圖片文件究竟用什么名字來保存實(shí)際上用戶并不關(guān)心,因此TFS在設(shè)計規(guī)劃上考慮在圖片的保存文件名上暗藏了一些元數(shù)據(jù)信息,例如圖片的大小、時間、訪問頻次等等信息,包括所在的邏輯塊號。而在元數(shù)據(jù)上,實(shí)際上保存的信息很少,因此元數(shù)據(jù)結(jié)構(gòu)非常簡單。僅僅只需要一個fileID,能夠準(zhǔn)確定位文件在什么地方。
由于大量的文件信息都隱藏在文件名中,整個系統(tǒng)完全拋棄了傳統(tǒng)的目錄樹結(jié)構(gòu),因?yàn)槟夸洏溟_銷最大。拿掉后,整個集群的高可擴(kuò)展性極大提高。實(shí)際上,這一設(shè)計理念和目前業(yè)界的“對象存儲”較為類似,淘寶網(wǎng)TFS文件系統(tǒng)已經(jīng)更新到1.3版本,在生產(chǎn)系統(tǒng)的性能已經(jīng)得到驗(yàn)證,且不斷得到了完善和優(yōu)化,淘寶網(wǎng)目前在對象存儲領(lǐng)域的研究已經(jīng)走在前列。
TFS 1.3版本的集群文件系統(tǒng)
到2009年6月,TFS 1.3版本上線,集群規(guī)模大大擴(kuò)展,部署到淘寶的圖片生產(chǎn)系統(tǒng)上,整個系統(tǒng)已經(jīng)從原有200臺PC服務(wù)器擴(kuò)增至440臺PC Server(300G*12 SAS 15K RPM) + 30臺PC Server (600G*12 SAS 15K RPM)。支持文件數(shù)量也擴(kuò)容至百億級別;系統(tǒng)部署存儲容量:1800TB(1.8PB);當(dāng)前實(shí)際存儲容量:995TB;單臺Data Server支持隨機(jī)IOPS 900+,流量15MB+;目前Name Server運(yùn)行的物理內(nèi)存是217MB(服務(wù)器使用千兆網(wǎng)卡)。
TFS 1.3版本邏輯結(jié)構(gòu)圖
圖為TFS1.3版本的邏輯結(jié)構(gòu)圖,在TFS1.3版本中,淘寶網(wǎng)的軟件工作組重點(diǎn)改善了心跳和同步的性能,最新版本的心跳和同步在幾秒鐘之內(nèi)就可完成切換,同時進(jìn)行了一些新的優(yōu)化:包括元數(shù)據(jù)存內(nèi)存上,清理磁盤空間,性能上也做了優(yōu)化,包括:
完全扁平化的數(shù)據(jù)組織結(jié)構(gòu),拋棄了傳統(tǒng)文件系統(tǒng)的目錄結(jié)構(gòu)。
在塊設(shè)備基礎(chǔ)上建立自有的文件系統(tǒng),減少EXT3等文件系統(tǒng)數(shù)據(jù)碎片帶來的性能損耗
單進(jìn)程管理單塊磁盤的方式,摒除RAID5機(jī)制
帶有HA機(jī)制的中央控制節(jié)點(diǎn),在安全穩(wěn)定和性能復(fù)雜度之間取得平衡。
盡量縮減元數(shù)據(jù)大小,將元數(shù)據(jù)全部加載入內(nèi)存,提升訪問速度。
跨機(jī)架和IDC的負(fù)載均衡和冗余安全策略。
完全平滑擴(kuò)容。
在后面“圖片服務(wù)器部署與緩存”一頁中詳細(xì)介紹了淘寶網(wǎng)整個圖片處理系統(tǒng)的拓?fù)鋱D。我們可以看到:TFS在淘寶的部署環(huán)境中前端有兩層緩沖,到達(dá)TFS系統(tǒng)的請求非常離散,所以TFS內(nèi)部是沒有任何數(shù)據(jù)的內(nèi)存緩沖的,包括傳統(tǒng)文件系統(tǒng)的內(nèi)存緩沖也不存在。
TFS主要的性能參數(shù)不是IO吞吐量,而是單臺PCServer提供隨機(jī)讀寫IOPS。由于大家硬件型號不同,當(dāng)然也是因?yàn)橐恍┘夹g(shù)保密的原因,淘寶網(wǎng)很難給出一個參考值來說明性能。但基本上可以達(dá)到單塊磁盤隨機(jī)IOPS理論最大值的60%左右,整機(jī)的輸出隨盤數(shù)增加而線性增加。
開發(fā)中的TFS2.0與開源TFS
TFS 2.0已經(jīng)在開發(fā)過程中,主要解決的問題是大文件存儲的難題。TFS最早開發(fā)的時候針對小文件頻繁并發(fā)讀取的難題而開發(fā),設(shè)計的塊大小是64MB,意味著每個文件小于64MB,這對于一般的圖片存儲來說完全足夠用了,但對于大文件存儲還有一些瓶頸。
TFS 2.0將重點(diǎn)針對大文件跨越塊的存儲進(jìn)行優(yōu)化。此外,還包括SSD、SAS硬盤不同硬盤特性的應(yīng)用優(yōu)化。根據(jù)淘寶網(wǎng)的資料數(shù)據(jù),SSD的存儲成本大約是20¥每GB左右,SAS硬盤的存儲成本約在 5-6¥每GB,SATA盤的每GB成本不到1¥。隨著對應(yīng)用性能的要求提升,應(yīng)用SSD是未來的趨勢,針對不同硬盤的存取特性進(jìn)行優(yōu)化是十分必要的。
此外,章文嵩宣布,TFS將在9月份完全開源,完全開源則意味著淘寶網(wǎng)將提供所有的源代碼,開源版本的TFS將與淘寶網(wǎng)線上應(yīng)用的系統(tǒng)完全一致。
圖片服務(wù)器部署與緩存
下圖為淘寶網(wǎng)整體系統(tǒng)的拓?fù)鋱D結(jié)構(gòu)。整個系統(tǒng)就像一個龐大的服務(wù)器一樣,有處理單元、緩存單元和存儲單元。前面已經(jīng)詳細(xì)介紹過了后臺的TFS集群文件存儲系統(tǒng),在TFS前端,還部署著200多臺圖片文件服務(wù)器,用Apatch實(shí)現(xiàn),用于生成縮略圖的運(yùn)算。
這里需要補(bǔ)充一點(diǎn),根據(jù)淘寶網(wǎng)的縮略圖生成規(guī)則,縮略圖都是實(shí)時生成的。這樣做的好處有兩點(diǎn):一是為了避免后端圖片服務(wù)器上存儲的圖片數(shù)量過多,大大節(jié)約后臺存儲空間的需求,淘寶網(wǎng)計算,采用實(shí)時生成縮略圖的模式比提前全部生成好縮略圖的模式節(jié)約90%的存儲空間,也就是說,存儲空間只需要后一種模式的10%;二是,縮略圖可根據(jù)需要實(shí)時生成出來,更為靈活。
淘寶網(wǎng)圖片存儲與處理系統(tǒng)全局拓?fù),圖片服務(wù)器前端還有一級和二級緩存服務(wù)器,盡量讓圖片在緩存中命中,最大程度的避免圖片熱點(diǎn),實(shí)際上后端到達(dá)TFS的流量已經(jīng)非常離散和平均
圖片文件服務(wù)器的前端則是一級緩存和二級緩存,前面還有全局負(fù)載均衡的設(shè)置,解決圖片的訪問熱點(diǎn)問題。圖片的訪問熱點(diǎn)一定存在,重要的是,讓圖片盡量在緩存中命中。目前淘寶網(wǎng)在各個運(yùn)營商的中心點(diǎn)設(shè)有二級緩存,整體系統(tǒng)中心店設(shè)有一級緩存,加上全局負(fù)載均衡,傳遞到后端TFS的流量就已經(jīng)非常均衡和分散了,對前端的響應(yīng)性能也大大提高。
根據(jù)淘寶的緩存策略,大部分圖片都盡量在緩存中命中,如果緩存中無法命中,則會在本地服務(wù)器上查找是否存有原圖,并根據(jù)原圖生成縮略圖,如果都沒有命中,則會考慮去后臺TFS集群文件存儲系統(tǒng)上調(diào)取,因此,最終反饋到TFS集群文件存儲系統(tǒng)上的流量已經(jīng)被大大優(yōu)化了。
淘寶網(wǎng)將圖片處理與緩存編寫成基于Nginx的模塊,淘寶網(wǎng)認(rèn)為Nginx是目前性能最高的HTTP服務(wù)器(用戶空間),代碼清晰,模塊化非常好。淘寶網(wǎng)使用GraphicsMagick進(jìn)行圖片處理,采用了面向小對象的緩存文件系統(tǒng),前端有LVS+Haproxy將原圖和其所有縮略圖請求都調(diào)度到同一臺Image Server。
文件定位上,內(nèi)存用hash算法做索引,最多一次讀盤。寫盤方式則采用Append方式寫,并采用了淘汰策略FIFO,主要考慮降低硬盤的寫操作,沒有必要進(jìn)一步提高Cache命中率,因?yàn)镮mage Server和TFS在同一個數(shù)據(jù)中心,讀盤效率還是非常高的。
演講人簡介
章文嵩博士是淘寶網(wǎng)的研究員,主要負(fù)責(zé)基礎(chǔ)核心軟件研發(fā)、推進(jìn)網(wǎng)絡(luò)軟硬件方面的性能優(yōu)化、搭建下一代高可擴(kuò)展低碳低成本淘寶電子商務(wù)基礎(chǔ)設(shè)施。他也是開放源碼及Linux內(nèi)核的開發(fā)者,著名的Linux集群項(xiàng)目--LVS (Linux Virtual Server)的創(chuàng)始人和主要開發(fā)人員,LVS集群代碼已在Linux 2.4和2.6的官方內(nèi)核中。在設(shè)計和架構(gòu)大型系統(tǒng)、系統(tǒng)軟件開發(fā)、Linux操作系統(tǒng)、系統(tǒng)安全和軟件開發(fā)管理上有著豐富的經(jīng)驗(yàn)。他一直在自由軟件的開發(fā)上花費(fèi)時間,并以此為樂。
章文嵩博士
標(biāo)簽: 磁盤陣列 , 存儲集群 , NAS集群 , 分布式文件系統(tǒng)
查看更多熱銷產(chǎn)品>大學(xué)生分期購物銷量榜
相關(guān)文章
網(wǎng)友評論
已有0條評論
本文關(guān)鍵詞:海量圖片存儲,由筆耕文化傳播整理發(fā)布。
本文編號:59064
本文鏈接:http://sikaile.net/wenshubaike/shangbiaozhuanli/59064.html