OpenStack Swift跨地域存儲(chǔ)集群的部署與優(yōu)化

責(zé)任編輯:editor005

作者:譚盼雨

2016-06-17 14:27:50

摘自:51CTO

OpenStack Swift,大家會(huì)說(shuō)它是OpenStack的對(duì)象存儲(chǔ)服務(wù),或者對(duì)象存儲(chǔ)項(xiàng)目,但是實(shí)際上對(duì)象存儲(chǔ)這個(gè)詞它的含義,不同的人有不同的理解。

OpenStack Swift,大家會(huì)說(shuō)它是OpenStack的對(duì)象存儲(chǔ)服務(wù),或者對(duì)象存儲(chǔ)項(xiàng)目,但是實(shí)際上對(duì)象存儲(chǔ)這個(gè)詞它的含義,不同的人有不同的理解。

首先,讓我們先看一個(gè)例子,就是淘寶在06、07年的時(shí)候,開(kāi)始用他們自己研發(fā)的分布式存儲(chǔ)系統(tǒng),或者用現(xiàn)在時(shí)髦的話說(shuō)叫SDS存儲(chǔ)系統(tǒng),來(lái)替代NAS設(shè)備。就以前淘寶的圖片都是放在NAS里面的,但是從06年開(kāi)始逐步的替換,當(dāng)然很快,現(xiàn)在早已經(jīng)不見(jiàn)了,沒(méi)有一臺(tái)NAS,負(fù)責(zé)一臺(tái)SAN在淘寶的后端里面。中間有一個(gè)數(shù)據(jù),當(dāng)然更新的數(shù)據(jù)在2010年的時(shí)候,淘寶后端的圖片數(shù)量已經(jīng)突破了280億,這個(gè)數(shù)量也是非常巨大的。這也是造成他們?yōu)槭裁匆鎿QNAS一個(gè)很重要的原因,就是因?yàn)閷?duì)于海量數(shù)據(jù)存儲(chǔ),傳統(tǒng)的NAS、傳統(tǒng)的文件系統(tǒng)可能會(huì)遇到問(wèn)題,這是一方面。另一方面,就是他要支持客戶端直接訪問(wèn)。

也就是說(shuō),我們現(xiàn)在隨著互聯(lián)網(wǎng)的發(fā)展、移動(dòng)互聯(lián)網(wǎng)的發(fā)展,我們的手機(jī),我們的移動(dòng)互聯(lián)網(wǎng)的發(fā)展,像網(wǎng)頁(yè)如果要讀取存儲(chǔ)或者讀取數(shù)據(jù)的話,我們會(huì)希望他能夠直接訪問(wèn)存儲(chǔ)系統(tǒng),而不像再像以前,先通過(guò)Http服務(wù),訪問(wèn)應(yīng)用服務(wù)器或者訪問(wèn)web前端服務(wù)器,然后web再往后給到應(yīng)用服務(wù)器。應(yīng)用服務(wù)器再往后接到存儲(chǔ),然后再把數(shù)據(jù)吐出來(lái),現(xiàn)在可能會(huì)希望能夠由客戶端直接訪問(wèn)存儲(chǔ),這樣的話對(duì)整個(gè)存儲(chǔ)系統(tǒng)的并發(fā),一方面是對(duì)整個(gè)系統(tǒng)的并發(fā)有一個(gè)非常好的提升。另一方面,也對(duì)存儲(chǔ)系統(tǒng)的并發(fā)提出了一個(gè)挑戰(zhàn),當(dāng)然這樣做以后就會(huì)大量節(jié)省中間那兩層,web服務(wù)器和應(yīng)用服務(wù)期的開(kāi)銷,簡(jiǎn)化整個(gè)系統(tǒng)的架構(gòu),所以他帶來(lái)的好處也是很多的,這就是為什么像淘寶,他會(huì)在當(dāng)年用,其實(shí)用現(xiàn)在的話就是SDS或者對(duì)象存儲(chǔ)系統(tǒng)來(lái)替代當(dāng)初的NAS。

那么淘寶只是一個(gè)例子,其實(shí)在互聯(lián)網(wǎng)公司中,類似的架構(gòu)、類似的技術(shù)在廣泛的得到使用,互聯(lián)網(wǎng)公司是這樣。那對(duì)于傳統(tǒng)行業(yè),我們現(xiàn)在所謂的傳統(tǒng)行業(yè),或者我更習(xí)慣說(shuō)是非互聯(lián)網(wǎng)行業(yè),

而過(guò)去將近一年多,將近兩年時(shí)間我所從事的主要工作,就是我把所了解的互聯(lián)網(wǎng)公司里面用到的比較好的技術(shù)推薦或者傳播或者說(shuō)幫助傳統(tǒng)行業(yè)的非互聯(lián)網(wǎng)產(chǎn)業(yè)的企業(yè)怎么樣應(yīng)用、怎么樣改造他們的IT系統(tǒng)。

以前我們?nèi)ャy行辦卡,需要排幾十分鐘的隊(duì)才能辦到一張卡,或者需要去指定網(wǎng)點(diǎn)才能辦,而現(xiàn)在,比如在招行,進(jìn)去10分鐘,就可以辦一張卡出來(lái)。為什么?因?yàn)槲覀儾挥迷俚焦衽_(tái)去排隊(duì)了,雖然也要去網(wǎng)點(diǎn),但是也有這樣的一個(gè)機(jī)器,你站在這個(gè)機(jī)器前邊,跟機(jī)器那邊的人對(duì)話幾句,然后簽署幾個(gè)電子檔的文件就可以了。然后在他的后端,會(huì)把你的這段視頻,實(shí)際上聲音是要單獨(dú)存儲(chǔ)的。因?yàn)槁曃淖R(shí)別比視頻識(shí)別目前來(lái)看,還是要更容易和準(zhǔn)確一些,所以聲音文件是要單獨(dú)存儲(chǔ)的,這是他們的業(yè)務(wù),這是他們的應(yīng)用,那后端的存儲(chǔ)用什么?用以前傳統(tǒng)存儲(chǔ)還行不行,同樣會(huì)面對(duì)像淘寶面對(duì)的兩個(gè)問(wèn)題,第一個(gè)是數(shù)據(jù)量的激增,以前銀行可以說(shuō)多長(zhǎng)時(shí)間能存滿100T的數(shù)據(jù),,存100T會(huì)需要很長(zhǎng)時(shí)間的數(shù)據(jù)積累,但是上了這套系統(tǒng)以后,因?yàn)榇罅康囊曨l需要存儲(chǔ),所以很快這個(gè)存儲(chǔ)容量就會(huì)發(fā)生一個(gè)非常大的增長(zhǎng),那以前傳統(tǒng)的存儲(chǔ)架構(gòu)可能會(huì)有問(wèn)題。另外這也是一種客戶端,這個(gè)客戶端,我們也會(huì)希望它能夠直接訪問(wèn)存儲(chǔ)系統(tǒng),還有類似的,像以前我們?nèi)ャy行要復(fù)印一些,現(xiàn)在我們?nèi)チ嗽?,如果辦借助卡,可能主要是復(fù)印一個(gè)身份證,但是實(shí)際上銀行有很多貸款業(yè)務(wù),中間有大量的票據(jù)需要復(fù)印、需要存檔,那現(xiàn)在用什么?全都是掃描件,全都是電子檔的數(shù)字圖片存檔。

面對(duì)這樣的存儲(chǔ)需求,背后最好的解決方案是什么?

就是我們今天在這里談?wù)摰膶?duì)象存儲(chǔ)。對(duì)象存儲(chǔ),也可以叫類似于S3的存儲(chǔ),S3—like storgae,它主要有兩個(gè)特征。

第一個(gè)是沒(méi)有一級(jí)一級(jí)的文件夾、目錄數(shù)的東西,它是用戶在它的存儲(chǔ)空間只能看到一級(jí),類似于目錄動(dòng),叫做桶或者叫做容器。然后它就把對(duì)象放到那些桶里面、容器里面,這個(gè)就跟我們使用傳統(tǒng)文件系統(tǒng)一級(jí)一級(jí)建目錄的方式不一樣。大家知道在亞馬遜的云上面,最早提出的服務(wù),在它的虛機(jī)、云主機(jī)推出之先,最早提供的服務(wù)也是對(duì)象存儲(chǔ)。

另外一個(gè)特點(diǎn),提供REST API ,也就是說(shuō)直接能夠HTTP的訪問(wèn)。這個(gè)是HTTP的接口,它非常簡(jiǎn)單,因?yàn)樗荝EStful的,所以他主要通過(guò)put、get、Delete、post,四類接口對(duì)數(shù)據(jù)進(jìn)行操作。

文件存儲(chǔ)

跟文件存儲(chǔ)非常類似,叫Object Storage。Object Storage是對(duì)象,這個(gè)在臺(tái)灣那邊給它翻譯為物件存儲(chǔ),我覺(jué)得更準(zhǔn)確一些,他說(shuō)實(shí)際上這個(gè)Object 就是東西,東西往框里放,就是這樣一個(gè)意思。那Object本質(zhì)上或者從另外一個(gè)角度來(lái)說(shuō),它就是我們今天說(shuō)的文件,只不過(guò)它的系統(tǒng)這種形態(tài)方面不太一樣。

這個(gè)也涉及到一個(gè)問(wèn)題,就是這個(gè)東西沒(méi)有文件夾,沒(méi)有目錄數(shù)了,我們?cè)趺垂芾頂?shù)據(jù)對(duì)吧,現(xiàn)在很多人會(huì)想到這個(gè)事,他又會(huì)有疑慮,就是我的應(yīng)用,以前用的文件夾管理數(shù)據(jù),現(xiàn)在沒(méi)有了,怎么管理數(shù)據(jù)?

其實(shí)仔細(xì)想一下,現(xiàn)在在很多場(chǎng)景下文件存儲(chǔ)沒(méi)有用到文件夾。這個(gè)聽(tīng)起來(lái)很瘋狂,文件的存儲(chǔ)沒(méi)有用到文件夾,其實(shí)大家仔細(xì)想一下,舉一個(gè)非常直接的例子,你知道你手記拍的照片存在哪個(gè)目錄下,文件名是什么嗎?其實(shí)你不知道,但是你用的很好。如果程序員來(lái)編程的話,在后端實(shí)現(xiàn)一個(gè)系統(tǒng)的時(shí)候,其實(shí)也是類似的,現(xiàn)在很多地方,都不需要用文件夾來(lái)管理數(shù)據(jù)的,不需要用目錄來(lái)管理數(shù)據(jù)的。當(dāng)然并不是說(shuō)這種東西要否定它,只是說(shuō)我們?cè)谟龅侥承﹩?wèn)題的時(shí)候可以多想一下,像buckets實(shí)現(xiàn),還有像操作系統(tǒng)的實(shí)現(xiàn),它肯定得依賴文件系統(tǒng)。

海量數(shù)據(jù)存儲(chǔ)的場(chǎng)景

大數(shù)據(jù)存儲(chǔ)場(chǎng)景主要包括這兩個(gè),一個(gè)是超大文件存儲(chǔ),一個(gè)是海量小文件存儲(chǔ)。另外一個(gè)是極高的可靠性與可用性,就是極高的。就是這個(gè)基本上可以很容易做到你的數(shù)據(jù)永遠(yuǎn)不丟失,然后永遠(yuǎn)在線的訪問(wèn),這個(gè)對(duì)于Swift來(lái)說(shuō)要做到很容易。當(dāng)然必須得做正確,不正確的做法其實(shí)也是很容易出問(wèn)題的,所以我們強(qiáng)調(diào)運(yùn)維這個(gè)事情。特別是對(duì)分布式系統(tǒng)來(lái)說(shuō),正確的做事情,運(yùn)維在中間基本上,做OpenStack,有一句話叫三分產(chǎn)品、七分運(yùn)維,這個(gè)是很重要的。

由于Swift采用的是全分布式架構(gòu),所以它的擴(kuò)展性非常好,沒(méi)有集中節(jié)點(diǎn)。比如說(shuō)HDFS,包括像淘寶的TFS,其實(shí)還是有NAS接點(diǎn)的,那NAS接點(diǎn)往往就會(huì)成為大家關(guān)注瓶頸的關(guān)鍵,這個(gè)在Swift里面是沒(méi)有的,所以它的擴(kuò)展性非常好。而且很多存儲(chǔ)系統(tǒng),隨著規(guī)模的擴(kuò)展到一定程度,規(guī)模特別大的時(shí)候,性能可能會(huì)下降,或者說(shuō)衰減的很厲害,但是Swift不會(huì)。Swift幾乎在非常大的規(guī)模,仍然做到性能隨著規(guī)模的線性提升。

那么,還有就是目前可以支持糾刪碼,所以分布式存儲(chǔ)三副本或者多副本,不再耗裸存儲(chǔ)容量的事情,其實(shí)在Swift里面目前已經(jīng)是得到解決,

現(xiàn)在在Swift基礎(chǔ)上,做了哪些企業(yè)級(jí)用戶比較關(guān)心事情?

第一個(gè)是安全性。

第二個(gè)是我們除了支持對(duì)象結(jié)構(gòu)以外,我們?yōu)榱苏疹櫼郧傲?xí)慣NAS的應(yīng)用,我們也可以支持POSIX兼容的接口。

第三個(gè)就是就是支持應(yīng)用開(kāi)發(fā)。

另外,說(shuō)到在跨地域的基礎(chǔ)之上,我們其實(shí)還可以提供雙活或者多活的存儲(chǔ)解決方案。所以在我們存儲(chǔ)解決方案里面,針對(duì)目前這種企業(yè)級(jí)客戶比較關(guān)注的雙活和多活的事情,提供了這種定制化的解決方案。

跨域部署主要是三個(gè)方面:

第一個(gè)是在硬件上

第二個(gè)就是Ring的創(chuàng)建

第三個(gè)是最終一致性的問(wèn)題

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)