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