網(wǎng)易:對(duì)象云存儲(chǔ)技術(shù)解析
- 來(lái)源:中國(guó)信息化周報(bào) smarty:if $article.tag?>
- 關(guān)鍵字:網(wǎng)易,存儲(chǔ) smarty:/if?>
- 發(fā)布時(shí)間:2014-10-16 09:16
在2014-中國(guó)系統(tǒng)架構(gòu)師大會(huì)上,網(wǎng)易云對(duì)象存儲(chǔ)系統(tǒng)構(gòu)架師來(lái)東敏先生作了題為《NOS(網(wǎng)易對(duì)象云存儲(chǔ))關(guān)鍵技術(shù)解析》的主題演講。
NOS的四個(gè)層次
網(wǎng)易云對(duì)象存儲(chǔ),即NetEase-Object-Storage(NOS)是一個(gè)海量的Key-Value系統(tǒng)。其中,Key最大支持1K字節(jié);Value最大支持1TB進(jìn)制文件,如圖片、視頻等靜態(tài)文件;Attribute則最多有10個(gè)鍵值對(duì)。目前整個(gè)網(wǎng)易云對(duì)象存儲(chǔ)系統(tǒng)(NOS)主要分為“接入、緩存、邏輯、存儲(chǔ)”四個(gè)層次。
接入層 使用Openresty(類似Tengine),其強(qiáng)大的Nginx-Lua模塊實(shí)現(xiàn)了桶粒度實(shí)時(shí)流量統(tǒng)計(jì)、流量隔離等功能;另外,使用Nginx-Lua寫了部分適合在接入層實(shí)現(xiàn)的邏輯;
緩存層 使用專業(yè)的緩存服務(wù)器TrafficServer,我們測(cè)試發(fā)現(xiàn)其無(wú)論在穩(wěn)定性還是功能和性能上,都比Squid靠譜;我們用它實(shí)現(xiàn)熱點(diǎn)數(shù)據(jù)以及富媒體處理后的臨時(shí)數(shù)據(jù)緩存;
邏輯層 使用Tomcat實(shí)現(xiàn)對(duì)象存儲(chǔ)主要的業(yè)務(wù)邏輯,由于Tomcat眾所周知的在高并發(fā)上的短板,我們正在積極探索,計(jì)劃使用Netty來(lái)替換Tomcat;
存儲(chǔ)層 是對(duì)象存儲(chǔ)系統(tǒng)的基石,NOS構(gòu)建在網(wǎng)易分布式文件系統(tǒng)(DFS)和網(wǎng)易分布式數(shù)據(jù)庫(kù)(DDB)之上,DFS做數(shù)據(jù)存儲(chǔ),而DDB則存儲(chǔ)元數(shù)據(jù)。
NOS云對(duì)象存儲(chǔ)關(guān)鍵技術(shù)
NOS從無(wú)到有經(jīng)歷了兩年時(shí)間,當(dāng)前網(wǎng)易內(nèi)部使用NOS的產(chǎn)品有30個(gè)左右,包括:易信、云音樂(lè)、云閱讀、公開(kāi)課、有道云筆記等重量級(jí)產(chǎn)品。團(tuán)隊(duì)成員包括4位開(kāi)發(fā),2位測(cè)試,1位運(yùn)維,0.5位項(xiàng)目管理。與公有云對(duì)象存儲(chǔ)系統(tǒng)的項(xiàng)目團(tuán)隊(duì)相比,我們應(yīng)該算是小團(tuán)隊(duì)作戰(zhàn)。但是NOS在功能接口方面,與市面上的幾家公有對(duì)象存儲(chǔ)系統(tǒng)基本差不多,甚至為了兼容POSIX文件系統(tǒng)接口,我們還提供了“根據(jù)prefix和delimiter列出桶內(nèi)對(duì)象”這樣的高級(jí)接口。
具體來(lái)說(shuō),網(wǎng)易NOS云對(duì)象存儲(chǔ)關(guān)鍵技術(shù)包括:
1.元數(shù)據(jù)存儲(chǔ)組件:DDB
2.數(shù)據(jù)存儲(chǔ)組件:DFS
3.列出桶內(nèi)對(duì)象
4.基于NOS的用戶態(tài)文件系統(tǒng)
5.富媒體服務(wù)框架
6.多租戶流量隔離
其中,DDB分布式數(shù)據(jù)庫(kù)系統(tǒng)(Distributed-DataBase)是網(wǎng)易杭研后臺(tái)技術(shù)中心研發(fā)的分布式關(guān)系數(shù)據(jù)庫(kù)平臺(tái)。它的主要目標(biāo)是解決以下問(wèn)題:“海量結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)”和“高并發(fā)高吞吐數(shù)據(jù)訪問(wèn)”。
而DFS分布式文件系統(tǒng)(Distributed-FileSystem)則是網(wǎng)易杭研后臺(tái)技術(shù)中心研發(fā)的分布式非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)平臺(tái)。主要負(fù)責(zé)解決“海量的非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)”和“高并發(fā)高吞吐數(shù)據(jù)訪問(wèn)”引發(fā)的難題。
網(wǎng)易在DFS方案中采用了分區(qū)(Bucket)預(yù)留+-系統(tǒng)生成訪問(wèn)健(Docid)的方式,通過(guò)預(yù)先規(guī)劃Bucket(2^24),不立即啟用。而且訪問(wèn)鍵(Docid)也是由系統(tǒng)分配而不是應(yīng)用程序指定。在增加一個(gè)物理節(jié)點(diǎn)時(shí),系統(tǒng)會(huì)啟用一批分區(qū)(Bucket)給該物理節(jié)點(diǎn)。當(dāng)系統(tǒng)生成訪問(wèn)健(Docid)時(shí),會(huì)使用新分配的分區(qū)(Bucket)。
網(wǎng)易云對(duì)象存儲(chǔ)系統(tǒng)(NOS)提供了互聯(lián)網(wǎng)上的存儲(chǔ)服務(wù),致力于提供高度可伸縮、高可靠的廉價(jià)數(shù)據(jù)存儲(chǔ)基礎(chǔ)設(shè)施,并給開(kāi)發(fā)者提供最大程度的便利。對(duì)象存儲(chǔ)把用戶數(shù)據(jù)存儲(chǔ)為桶里面的對(duì)象。對(duì)象由文件、描述文件的元數(shù)據(jù)信息組成。桶是對(duì)象的容器,一個(gè)用戶可以創(chuàng)建多個(gè)桶,桶名稱全局唯一。用戶可以通過(guò)簡(jiǎn)單的REST接口,在任何時(shí)間、任何地點(diǎn)、任何互聯(lián)網(wǎng)設(shè)備上進(jìn)行數(shù)據(jù)的上傳和下載,也可以使用WEB頁(yè)面對(duì)數(shù)據(jù)進(jìn)行管理。同時(shí),NOS還提供了Java-SDK,簡(jiǎn)化用戶的編程。用戶可以基于NOS搭建出各種多媒體分享網(wǎng)站、網(wǎng)盤、個(gè)人企業(yè)數(shù)據(jù)備份等基于大規(guī)模數(shù)據(jù)的服務(wù)。
網(wǎng)易云對(duì)象存儲(chǔ)系統(tǒng)架構(gòu)師 來(lái)東敏
