為了更好的說(shuō)明三者的差異,我打個(gè)比方,假設(shè)有三個(gè)人想從A地到B地,現(xiàn)在有三種交通方式。甲選擇轎車、乙選擇公共汽車、丙選擇地鐵。塊存儲(chǔ)類似于轎車,速度快,但是容量。ㄞI車只能乘坐幾個(gè)人);文件存儲(chǔ)類似于公共汽車,速度慢(公共汽車有站點(diǎn)和紅綠燈需要考慮),但是容量較大(能多坐不少人);對(duì)象存儲(chǔ)類似于地鐵,速度快,容量大。
圖3 三種存儲(chǔ)類型類比
2.對(duì)象存儲(chǔ)原理
2.1 對(duì)象數(shù)據(jù)組成結(jié)構(gòu)
與塊存儲(chǔ)和文件存儲(chǔ)管理數(shù)據(jù)的方式不同,對(duì)象存儲(chǔ)是以對(duì)象的形式管理數(shù)據(jù)的。對(duì)象和文件較大的不同,就是在文件基礎(chǔ)之上增加了元數(shù)據(jù)。一般情況下,對(duì)象分為三個(gè)部分:數(shù)據(jù)、元數(shù)據(jù)以及對(duì)象id。
對(duì)象的數(shù)據(jù)通常是無(wú)結(jié)構(gòu)的數(shù)據(jù),比如:圖片、視頻或文檔等;對(duì)象的元數(shù)據(jù)則指的是對(duì)象的相關(guān)描述,比如:圖片的大小、文檔的擁有者等;對(duì)象id則是一個(gè)全局的標(biāo)識(shí)符,用來(lái)區(qū)分對(duì)象的。
2.2 對(duì)象訪問(wèn)方式
對(duì)象存儲(chǔ),訪問(wèn)對(duì)象的方式很方便,是通過(guò)REST接口對(duì)對(duì)象進(jìn)行操作,用HTTP動(dòng)詞(GET、POST、PUT、DELETE等)描述操作。除此之外,還有一種訪問(wèn)方式,就是使用各大云商提供的客戶端去操作對(duì)象。比如:Amazon的s3cmd、阿里云的osscmd/ossutil、騰訊云的coscmd等。這些客戶端都是各個(gè)云商開發(fā)出來(lái),可以以命令行的形式在操作系統(tǒng)中操作對(duì)象的工具,各大云商都有詳細(xì)的文檔說(shuō)明,在這就不一一贅述了。
2.3 對(duì)象存儲(chǔ)優(yōu)缺點(diǎn)
先說(shuō)優(yōu)點(diǎn),之前大概也提了下:
可擴(kuò)展性高:對(duì)象存儲(chǔ)能夠擴(kuò)展數(shù)十乃至數(shù)百EB的容量,能夠充分利用高密度存儲(chǔ);
效率高:扁平化結(jié)構(gòu),不受復(fù)雜目錄系統(tǒng)對(duì)性能的影響;
無(wú)需遷移:對(duì)象存儲(chǔ)是一種橫向擴(kuò)展系統(tǒng),隨著容量的增加,數(shù)據(jù)根據(jù)
算法自動(dòng)分布于所有的對(duì)象存儲(chǔ)節(jié)點(diǎn);
安全性高:對(duì)象存儲(chǔ)通常憑借HTTP調(diào)用對(duì)象存儲(chǔ)本身提供的認(rèn)證密鑰來(lái)提供數(shù)據(jù)訪問(wèn);
訪問(wèn)方便:不光支持HTTP(S)協(xié)議,采用REST的API方式調(diào)用和檢索數(shù)據(jù),同樣增加了NFS和SMB支持;
成本相對(duì)低:與塊存儲(chǔ)方式相比,對(duì)象存儲(chǔ)是最具成本效益的數(shù)據(jù)存儲(chǔ)類型,并且與云計(jì)算搭配,把對(duì)象存儲(chǔ)的這一特性發(fā)揮的淋漓盡致。
再提缺點(diǎn):
最終一致性:由于不同節(jié)點(diǎn)的位置不同,數(shù)據(jù)同步時(shí)可能會(huì)有一定時(shí)間的延遲或者錯(cuò)誤;
不易做數(shù)據(jù)庫(kù):對(duì)象存儲(chǔ)比較適合存儲(chǔ)那些變動(dòng)不大甚至不變的文件,而對(duì)于像數(shù)據(jù)庫(kù)這種需要直接與存儲(chǔ)裸盤相互映射的應(yīng)用,還是塊存儲(chǔ)更合適。
3. 對(duì)象存儲(chǔ)應(yīng)用
前面說(shuō)了許多定義,可能許多朋友還是云里霧里的,不知道對(duì)象存儲(chǔ)怎么使用。下面,我以騰訊云的對(duì)象存儲(chǔ)(cos)為例,使用python的代碼方式來(lái)實(shí)際應(yīng)用一下。
cos有一個(gè)存儲(chǔ)桶(bucket,其他云商也有)的概念,它是對(duì)象的載體,可理解為存放對(duì)象的“容器”。用戶可以通過(guò)騰訊云控制器、API、SDK等多種方式管理以及配置存儲(chǔ)桶。下圖是功能的整個(gè)流程圖,具體含義后面會(huì)介紹
圖4 上傳圖片和查看圖片流程圖