監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
株洲網(wǎng)站建設(shè)公司

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 湖南OA系統(tǒng) > 株洲OA > 株洲網(wǎng)站建設(shè)公司

淘寶文件系統(tǒng)TFS的發(fā)展:商用存儲(chǔ)系統(tǒng)的局限

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

在講淘寶文件系統(tǒng)TFS之前,先回顧一下上面幾個(gè)版本。1.0版的PHP系統(tǒng)運(yùn)行了將近一年的時(shí)間(2003.05-2004.01);后來數(shù)據(jù)庫變成Oracle之后(2004.01-2004.05,叫1.1版本吧),不到半年就把開發(fā)語言轉(zhuǎn)換為Java系統(tǒng)了(2004.02-2005.03,叫2.0版本);進(jìn)行分庫、加入緩存、CDN之后我們叫它2.1版本(2004.10-2007.01)。這中間有些時(shí)間的重合,因?yàn)楹芏嗉軜?gòu)的演化并沒有明顯的時(shí)間點(diǎn),它是逐步進(jìn)化而來的。

在描述2.1版本的時(shí)候我寫的副標(biāo)題是“堅(jiān)若磐石”,這個(gè)“堅(jiān)若磐石”是因?yàn)檫@個(gè)版本終于穩(wěn)定下來了,在這個(gè)版本的系統(tǒng)上,淘寶網(wǎng)運(yùn)行了兩年多的時(shí)間。這期間有很多優(yōu)秀的人才加入,也開發(fā)了很多優(yōu)秀的產(chǎn)品,例如支付寶認(rèn)證系統(tǒng)、招財(cái)進(jìn)寶項(xiàng)目、淘寶旅行、淘寶彩票、淘寶論壇等等。甚至在團(tuán)購網(wǎng)站風(fēng)起云涌之前,淘寶網(wǎng)在2006年就推出了團(tuán)購的功能,只是淘寶網(wǎng)最初的團(tuán)購功能是買家發(fā)起的,達(dá)到賣家指定的數(shù)量之后,享受比一口價(jià)更低的價(jià)格,這個(gè)功能看起來是結(jié)合了淘寶一口價(jià)和荷蘭拍的另一種交易模式,但不幸沒有支撐下去。

在這些產(chǎn)品和功能的最底層,其實(shí)還是商品的管理和交易的管理這兩大功能。這兩大功能在2.1版本里面都有很大的變化。商品的管理起初是要求賣家選擇7天到期還是14天到期,到期之后就要下架,必須重新發(fā)布才能上架,上架之后就變成了新的商品信息(ID變過了)。另外如果這個(gè)期間內(nèi)成交了,之后再有新貨,必須發(fā)布一個(gè)新的商品信息。這么做有幾個(gè)原因,一是參照拍賣商品的時(shí)間設(shè)置,要在某日期前結(jié)束掛牌;二是搜索引擎不知道同樣的商品哪個(gè)排前面,那就把掛牌時(shí)間長的排前面,這樣就必須在某個(gè)時(shí)間把老的商品下架掉,不然它老排在前面;第三是成交信息和商品ID關(guān)聯(lián),這個(gè)商品如果多次編輯還是同一個(gè)ID的話,成交記錄里面的商品信息會(huì)變來變?nèi)ィ贿€有一個(gè)不為人知的原因,我們的存儲(chǔ)有限,不能讓所有的商品老存放在主庫里面。這種處理方式簡單粗暴,但還算是公平。不過這樣很多需求都無法滿足,例如同樣的商品,我上一次銷售的時(shí)候很多好評(píng)都沒法在下一個(gè)商品上體現(xiàn)出來;再例如我買過的商品結(jié)束后只看到交易的信息,不知道賣家還有沒有再賣了。后來基于這些需求,我們?cè)?006年下半年把商品和交易拆開。一個(gè)商家的一種商品有個(gè)唯一的ID,上下架都是同一個(gè)商品。那么如果賣家改價(jià)格、庫存什么的話,已成交的信息怎么處理?那就在買家每交易一次的時(shí)候,都記錄下商品的快照信息,有多少次交易就有多少個(gè)快照。這樣買賣雙方比較爽了,給系統(tǒng)帶來了什么?存儲(chǔ)的成本大幅度上升了!

存儲(chǔ)的成本高到什么程度呢?數(shù)據(jù)庫方面提到過用了IOE,一套下來就是千萬級(jí)別的,那幾套下來就是⋯⋯。另外淘寶網(wǎng)還有很多文件需要存儲(chǔ),我們有哪些文件呢?最主要的就是圖片、商品描述、交易快照,一個(gè)商品要包含幾張圖片和一長串的描述信息,而每一張圖片都要生成幾張規(guī)格不同的縮略圖。在2010年,淘寶網(wǎng)的后端系統(tǒng)上保存著286億個(gè)圖片文件。圖片在交易系統(tǒng)中非常重要,俗話說“一張好圖勝千言”、“無圖無真相”,淘寶網(wǎng)的商品照片,尤其是熱門商品,圖片的訪問流量是非常大的。淘寶網(wǎng)整體流量中,圖片的訪問流量要占到90%以上。且這些圖片平均大小為17.45KB,小于8K的圖片占整體圖片數(shù)量61%,占整體系統(tǒng)容量的11%。這么多的圖片數(shù)據(jù)、這么大的訪問流量,給淘寶網(wǎng)的系統(tǒng)帶來了巨大的挑戰(zhàn)。眾所周知,對(duì)于大多數(shù)系統(tǒng)來說,最頭疼的就是大規(guī)模的小文件存儲(chǔ)與讀取,因?yàn)榇蓬^需要頻繁的尋道和換道,因此在讀取上容易帶來較長的延時(shí)。在大量高并發(fā)訪問量的情況下,簡直就是系統(tǒng)的噩夢(mèng)。我們?cè)撛趺崔k?

同樣的套路,在某個(gè)規(guī)模以下,采用現(xiàn)有的商業(yè)解決方案,達(dá)到某種規(guī)模之后,商業(yè)的解決方案無法滿足,只有自己創(chuàng)造解決方案了。對(duì)于淘寶的圖片存儲(chǔ)來說,轉(zhuǎn)折點(diǎn)在2007年。這之前,一直采用的商用存儲(chǔ)系統(tǒng),應(yīng)用NetApp公司的文件存儲(chǔ)系統(tǒng)。隨著淘寶網(wǎng)的圖片文件數(shù)量以每年2倍(即原來3倍)的速度增長,淘寶網(wǎng)后端NetApp公司的存儲(chǔ)系統(tǒng)也從低端到高端不斷遷移,直至2006年,即使是NetApp公司最高端的產(chǎn)品也不能滿足淘寶網(wǎng)存儲(chǔ)的要求。從2006年開始,淘寶網(wǎng)決定自己開發(fā)一套針對(duì)海量小文件存儲(chǔ)的文件系統(tǒng),用于解決自身圖片存儲(chǔ)的難題。這標(biāo)志著淘寶網(wǎng)從使用技術(shù)到了創(chuàng)造技術(shù)的階段。

2007年之前的圖片存儲(chǔ)架構(gòu)如下圖:

章文嵩博士總結(jié)了幾點(diǎn)商用存儲(chǔ)系統(tǒng)的局限和不足:

首先是商用的存儲(chǔ)系統(tǒng)沒有對(duì)小文件存儲(chǔ)和讀取的環(huán)境進(jìn)行有針對(duì)性的優(yōu)化;其次,文件數(shù)量大,網(wǎng)絡(luò)存儲(chǔ)設(shè)備無法支撐;另外,整個(gè)系統(tǒng)所連接的服務(wù)器也越來越多,網(wǎng)絡(luò)連接數(shù)已經(jīng)到達(dá)了網(wǎng)絡(luò)存儲(chǔ)設(shè)備的極限。此外,商用存儲(chǔ)系統(tǒng)擴(kuò)容成本高,10T的存儲(chǔ)容量需要幾百萬,而且存在單點(diǎn)故障,容災(zāi)和安全性無法得到很好的保證。

談到在商用系統(tǒng)和自主研發(fā)之間的經(jīng)濟(jì)效益對(duì)比,章文嵩博士列舉了以下幾點(diǎn)經(jīng)驗(yàn):

1.商用軟件很難滿足大規(guī)模系統(tǒng)的應(yīng)用需求,無論存儲(chǔ)還是CDN還是負(fù)載均衡,因?yàn)樵趶S商實(shí)驗(yàn)室端,很難實(shí)現(xiàn)如此大的數(shù)據(jù)規(guī)模測(cè)試。

2.研發(fā)過程中,將開源和自主開發(fā)相結(jié)合,會(huì)有更好的可控性,系統(tǒng)出問題了,完全可以從底層解決問題,系統(tǒng)擴(kuò)展性也更高。

3.在一定規(guī)模效應(yīng)基礎(chǔ)上,研發(fā)的投入都是值得的。上圖是一個(gè)自主研發(fā)和購買商用系統(tǒng)的投入產(chǎn)出比對(duì)比,實(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)可在軟件和硬件多個(gè)層次不斷的優(yōu)化。

歷史總是驚人的巧合,在我們準(zhǔn)備研發(fā)文件存儲(chǔ)系統(tǒng)的時(shí)候,google走在了前面,2007年他們公布了GFS( google file system )的設(shè)計(jì)論文,這給我們帶來了很多借鑒的思路。隨后我們開發(fā)出了適合淘寶使用的圖片存儲(chǔ)系統(tǒng)TFS( taobao file system )。3年之后,我們發(fā)現(xiàn)歷史的巧合比我們想象中還要神奇,幾乎跟我們同時(shí),中國的另外一家互聯(lián)網(wǎng)公司也開發(fā)了他們的文件存儲(chǔ)系統(tǒng),甚至取的名字都一樣——TFS,太神奇了?。ú虏率悄募??)

2007年6月,TFS正式上線運(yùn)營。在生產(chǎn)環(huán)境中應(yīng)用的集群規(guī)模達(dá)到了200臺(tái)PC Server(146G*6 SAS 15K Raid5),文件數(shù)量達(dá)到上億級(jí)別;系統(tǒng)部署存儲(chǔ)容量:140TB;實(shí)際使用存儲(chǔ)容量: 50TB;單臺(tái)支持隨機(jī)IOPS 200+,流量3MBps。

要講TFS的系統(tǒng)架構(gòu),首先要描述清楚業(yè)務(wù)需求,淘寶對(duì)圖片存儲(chǔ)的需求大概可以描述如下:

文件比較??;并發(fā)量高;讀操作遠(yuǎn)大于寫操作;訪問隨機(jī);沒有文件修改的操作;要求存儲(chǔ)成本低;能容災(zāi)能備份。應(yīng)對(duì)這種需求,顯然要用分布式存儲(chǔ)系統(tǒng);由于文件大小比較統(tǒng)一,可以采用專有文件系統(tǒng);并發(fā)量高,讀寫隨機(jī)性強(qiáng),需要更少的IO操作;考慮到成本和備份,需要用廉價(jià)的存儲(chǔ)設(shè)備;考慮到容災(zāi),需要能平滑擴(kuò)容。

參照GFS并做了適度的優(yōu)化之后,TFS1.0版的架構(gòu)圖如下:

從上面架構(gòu)圖上看:集群由一對(duì)Name Server和多臺(tái)Data Server構(gòu)成,Name Server 的兩臺(tái)服務(wù)器互為雙機(jī),就是集群文件系統(tǒng)中管理節(jié)點(diǎn)的概念。

在這個(gè)架構(gòu)中:

• 每個(gè)Data Server運(yùn)行在一臺(tái)普通的Linux主機(jī)上

• 以block文件的形式存放數(shù)據(jù)文件(一般64M一個(gè)block)

• block存多份保證數(shù)據(jù)安全

• 利用ext3文件系統(tǒng)存放數(shù)據(jù)文件

• 磁盤raid5做數(shù)據(jù)冗余

• 文件名內(nèi)置元數(shù)據(jù)信息,用戶自己保存TFS文件名與實(shí)際文件的對(duì)照關(guān)系–使得元數(shù)據(jù)量特別小。

淘寶TFS文件系統(tǒng)在核心設(shè)計(jì)上最大的取巧的地方就在,傳統(tǒng)的集群系統(tǒng)里面元數(shù)據(jù)只有1份,通常由管理節(jié)點(diǎn)來管理,因而很容易成為瓶頸。而對(duì)于淘寶網(wǎng)的用戶來說,圖片文件究竟用什么名字來保存實(shí)際上用戶并不關(guān)心,因此TFS在設(shè)計(jì)規(guī)劃上考慮在圖片的保存文件名上暗藏了一些元數(shù)據(jù)信息,例如圖片的大小、時(shí)間、訪問頻次等等信息,包括所在的邏輯塊號(hào)。而在元數(shù)據(jù)上,實(shí)際上保存的信息很少,因此元數(shù)據(jù)結(jié)構(gòu)非常簡單。僅僅只需要一個(gè)fileID,能夠準(zhǔn)確定位文件在什么地方。

由于大量的文件信息都隱藏在文件名中,整個(gè)系統(tǒng)完全拋棄了傳統(tǒng)的目錄樹結(jié)構(gòu),因?yàn)槟夸洏溟_銷最大。拿掉后,整個(gè)集群的高可擴(kuò)展性極大提高。實(shí)際上,這一設(shè)計(jì)理念和目前業(yè)界的“對(duì)象存儲(chǔ)”較為類似,淘寶網(wǎng)TFS文件系統(tǒng)已經(jīng)更新到1.3版本,在生產(chǎn)系統(tǒng)的性能已經(jīng)得到驗(yàn)證,且不斷得到了完善和優(yōu)化,淘寶網(wǎng)目前在對(duì)象存儲(chǔ)領(lǐng)域的研究已經(jīng)走在前列。

1.3版本的架構(gòu)見阿里味⋯⋯(編輯注:阿里味,淘寶內(nèi)網(wǎng) aliway.com

作者:趙超

發(fā)布:2007-03-31 14:11    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)欄目:
相關(guān)文章:
株洲OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普株洲網(wǎng)站建設(shè)公司其他應(yīng)用

株洲軟件開發(fā)公司 株洲門禁系統(tǒng) 株洲物業(yè)管理軟件 株洲倉庫管理軟件 株洲餐飲管理軟件 株洲網(wǎng)站建設(shè)公司