基于云計算的海量圖片存儲管理系統(tǒng)研究
摘要:隨著網(wǎng)絡(luò)信息容量的膨脹,如何高效地存儲和管理海量圖片數(shù)據(jù),傳統(tǒng)的數(shù)據(jù)管理技術(shù)難以滿足這些應(yīng)用所提出的對數(shù)據(jù)管理的需求。針對云計算應(yīng)用的特點和需求,借鑒傳統(tǒng)數(shù)據(jù)管理技術(shù)的理念,提出了一種基于CouchDB的高可擴展、高可靠的海量圖片存儲管理系統(tǒng)。系統(tǒng)采用分布式文件系統(tǒng)、分布式數(shù)據(jù)庫等技術(shù),支持海量數(shù)據(jù)存儲、資源目錄和交換體系以及并行程序處理,可提供從數(shù)據(jù)到處理功能的一體化服務(wù)。實驗證明,本系統(tǒng)具有可行性,能滿足空間信息服務(wù)的多種需求。
關(guān)鍵詞:云計算;數(shù)據(jù)管理;分布式數(shù)據(jù)管理系統(tǒng);圖片云系統(tǒng)
隨著計算機網(wǎng)絡(luò)、網(wǎng)格計算、WEB服務(wù)、新型WEB應(yīng)用等理念和技術(shù)的發(fā)展,萬維網(wǎng)己經(jīng)從一個傳統(tǒng)的HTML文件共享、交換、訪問平臺轉(zhuǎn)變?yōu)槿我庑畔①Y源的共享平臺,架構(gòu)與互聯(lián)網(wǎng)之上的云計算模式成為了大勢所趨。云計算中最重要一類是數(shù)據(jù)密集型的計算,其核心內(nèi)涵是數(shù)據(jù)管理。傳統(tǒng)的數(shù)據(jù)管理技術(shù)難以滿足這些應(yīng)用所提出的對數(shù)據(jù)管理的需求。本文借鑒傳統(tǒng)數(shù)據(jù)管理技術(shù)的理念,研究、設(shè)計了一個基于CouchDB的高可擴展、高可靠的海量圖片存儲管理系統(tǒng)。
1 云計算的定義及特點
云計算是以一種融合的方式,通過網(wǎng)絡(luò)作載體,以虛擬化技術(shù)為基礎(chǔ),以提供基礎(chǔ)架構(gòu)、平臺、軟件等服務(wù)為形式,整合大規(guī)??蓴U展的計算、存儲、數(shù)據(jù)、應(yīng)用、IT資源等分布式計算資源進行協(xié)同工作的超級計算模式。在云計算模式下,用戶不再需要購買復(fù)雜的硬件和軟件,而只需要支付相應(yīng)的費用給“云計算”服務(wù)提供商,通過網(wǎng)絡(luò)就可以方便地獲取所需要的計算和存儲等資源。在計價上采用了更靈活的方式。從管理視角,云計算提供了一種管理大量虛擬化資源的方式,它們可以被自動的匯聚并提供服務(wù),可以彈性的進行服務(wù)的提供和擴展。云計算是一種新的用戶體驗和業(yè)務(wù)模式,具備服務(wù)標準化、快速部署、靈活的計費、容易訪問\獲得的特點。云計算作為一種基礎(chǔ)架構(gòu)管理和服務(wù)提供方法,具備虛擬化資源、彈性擴展的提供服務(wù)、按照一個大資源池的方式進行管理的特點。
云計算是一種計算模式,利用互聯(lián)網(wǎng)技術(shù)把大量可擴展(和彈性)的IT相關(guān)的能力作為一種服務(wù)提供給多個用戶按照運營模式可以分為公共云、私有云、混合云3種。
公共云:通過自己的基礎(chǔ)架構(gòu)直接向用戶提供服務(wù)。用戶通過互聯(lián)網(wǎng)訪問服務(wù),并不擁有云計算資源。
私有云:企業(yè)自己搭建云計算基礎(chǔ)架構(gòu),面向內(nèi)部用戶或外部客戶提供云計算服務(wù)。企業(yè)擁有基礎(chǔ)架構(gòu)的自主權(quán),并且可以基于自己的需求改進服務(wù),進行自主創(chuàng)新。
混合云:也就是既有自已的云計算基礎(chǔ)架構(gòu),也使用外部公共云提供的服務(wù)。
2 云計算的關(guān)鍵技術(shù)
云計算是以數(shù)據(jù)為中心的一種數(shù)據(jù)密集型的超級計算模式。在數(shù)據(jù)存儲、數(shù)據(jù)管理、編程模式、并發(fā)控制、系統(tǒng)管理等5個方面具有自身獨特的技術(shù)。
1)海量分布式存儲技術(shù)
為保證保證存儲數(shù)據(jù)的可靠性、高可用性和經(jīng)濟性,云計算的存儲數(shù)據(jù)采取分布式冗余存儲存儲方式,以高可靠軟件來彌補硬件的不足,從而對外提供廉價可靠的系統(tǒng)。為了滿足大量用戶的需求,數(shù)據(jù)存儲技術(shù)必須具有高吞吐率和高傳輸率的特點。
云計算的數(shù)據(jù)存儲系統(tǒng)主要有Google的GFS(Google File System)和Hadoop開發(fā)團隊開發(fā)的開源系統(tǒng)——HDFS(Hadoop Distr4buted File System)。大部分IT廠商,包括Yahoo、Intel的云計劃采用的都是HDFS的數(shù)據(jù)存儲技術(shù)。
2)并行編程模式
為了高效利用云計算的資源,使用戶能夠更輕松地享受云計算帶來的服務(wù),云計算的編程模式必須保證后臺復(fù)雜的并行執(zhí)行和任務(wù)調(diào)度對用戶和編程人員來說是透明的。云計算采用Map-Reduce編程模式,將任務(wù)自動分成多個子任務(wù),通過Map和Reduce兩步實現(xiàn)任務(wù)在大規(guī)模計算節(jié)點中的調(diào)度與分配。
3)數(shù)據(jù)管理技術(shù)
云計算對大數(shù)據(jù)集進行分析、處理,向用戶提供高效服務(wù),因此,數(shù)據(jù)管理技術(shù)必須能夠高效地管理大數(shù)據(jù)集。另外,如何在規(guī)模巨大的數(shù)據(jù)中找到特定的數(shù)據(jù),也是云計算數(shù)據(jù)管理技術(shù)所必須解決的問題。云計算系統(tǒng)的數(shù)據(jù)管理往往采用列存儲的數(shù)據(jù)管理模式,保證海量數(shù)據(jù)存儲和分析性能。
4)分布式資源管理技術(shù)
在多節(jié)點并發(fā)執(zhí)行環(huán)境,分布式資源管理技術(shù)是保證系統(tǒng)狀態(tài)正確的關(guān)鍵技術(shù)。系統(tǒng)狀態(tài)需要在多節(jié)點之間同步,關(guān)鍵節(jié)點出現(xiàn)故障時需要能夠自動遷移服務(wù)。分布式資源管理技術(shù)通過“鎖”機制來協(xié)凋多任務(wù)對資源的使用,從而保證數(shù)據(jù)操作的一致性。
5)云計算平臺管理技術(shù)
云計算資源規(guī)模龐大,一個系統(tǒng)的服務(wù)器數(shù)量可能會高達10萬臺,且很有可能跨越幾個坐落于不同物理地點的數(shù)據(jù)中心,同時還在其上運行著成千上萬種應(yīng)用。如何有效地管理這些服務(wù)器,保證這些服務(wù)器組成的系統(tǒng)能夠提供每天24小時不間斷服務(wù)是一個巨大的挑戰(zhàn)。云計算系統(tǒng)管理技術(shù)是云計算的“神經(jīng)網(wǎng)絡(luò)”,它能使大量的服務(wù)器協(xié)同工作,方便地進行業(yè)務(wù)部署和開通,快速地發(fā)現(xiàn)和恢復(fù)系統(tǒng)故障,使云計算系統(tǒng)通過自動化、智能化的手段實現(xiàn)大規(guī)模的可運營、可管理。
3 云計算中數(shù)據(jù)管理系統(tǒng)應(yīng)具備的特征
大規(guī)模云存儲技術(shù)與分布式數(shù)據(jù)管理系統(tǒng)結(jié)合,能夠為各行各業(yè)提供了一個海量存儲空間,并支持靈活擴展、高性能訪問的文件共享存儲平臺。平臺具有的一些屬性和特征
1)高效性
云計算是一種隨用隨付費的模式,耶么使用云計算資源的費用會隨著所需要的存儲、網(wǎng)絡(luò)帶寬和計算機能源線性增長。因此,如果數(shù)據(jù)分析軟件產(chǎn)品A比B需要更多的計算單元去執(zhí)行相同的任務(wù),那么產(chǎn)品A就需要比B花費更多。因此,能用盡量少的資源去完成盡量多的任務(wù)的系統(tǒng)也就是我們所要尋找的。
2)容錯性
容錯性在分析型數(shù)據(jù)工作環(huán)境中的度量與在傳統(tǒng)工作環(huán)境中不同。對于傳統(tǒng)的工作,一個具有容錯性的DBMS可以從一個錯誤中恢復(fù)而不會丟失任何數(shù)據(jù)或恢復(fù)到最近一次完成的事務(wù);而在一個分布式數(shù)據(jù)庫環(huán)境中,則可以成功的提交事務(wù)并在一個工作負載中前進,甚至面對工作節(jié)點錯誤。對于分析型工作負載中只讀的請求,沒有寫事務(wù)的提交,也沒有在節(jié)點失效時更新的失敗。因此,對一個具有容錯性的分析型DBMS簡單的來說,如果一個與請求處理失敗關(guān)聯(lián)的節(jié)點失效,則不需要重發(fā)一個請求。
3)操作加密數(shù)據(jù)的能力
如敏感數(shù)據(jù)在上傳到云中之前有可能被加密。為了防止對這些敏感數(shù)據(jù)未經(jīng)授權(quán)的訪問,任何運行在云上的應(yīng)用都不應(yīng)該能夠在訪問之前直接解密數(shù)據(jù)。然而,為了進行解密而把整個表或列從云中傳輸出來對帶寬來說也是個挑戰(zhàn)。因此,數(shù)據(jù)分析系統(tǒng)應(yīng)該具有能夠直接操作加密數(shù)據(jù)的能力,使得最終只有較少的數(shù)據(jù)需要被傳輸?shù)絼e的地方進行解密,這樣就明顯提高了性能。
4)提供接口的能力
有很多面向用戶的商業(yè)智能工具是與數(shù)據(jù)庫軟件協(xié)同工作并在形象化、查詢生成、結(jié)果統(tǒng)計和高級數(shù)據(jù)分析方面起到一定幫助作用的。這些工具是分析型數(shù)據(jù)管理系統(tǒng)的一個重要組成部分,因為商業(yè)分析師通常在技術(shù)上不是很精通并且并不喜歡直接面對數(shù)據(jù)庫軟件。這些工具一般通過ODBC或JDBC與數(shù)據(jù)庫進行連接,因此希望處理這些產(chǎn)品的數(shù)據(jù)庫軟件必須通過這些連接接收SQL請求。
4 圖片數(shù)據(jù)存儲管理系統(tǒng)設(shè)計與實現(xiàn)
4.1 需求分析
隨著網(wǎng)絡(luò)技術(shù)的普及應(yīng)用和人們生活方式的改變,在線交易和服務(wù)需求的不斷增長,對企業(yè)存儲、保護和管理數(shù)據(jù)的能力提出了更高的要求。尤其是對淘寶網(wǎng)這樣的訪問量極高的電子交易網(wǎng)站來說,對圖片系統(tǒng)的要求更高。根據(jù)對淘寶網(wǎng)流量分析,圖片的訪問流量會占到90%以上,而主站的網(wǎng)頁則占到不到10%。淘寶整體圖片存儲系統(tǒng)容量1 800 TB(LSPB),已經(jīng)占用空間990 TB(約IPB),平均圖片大小是18.45 K;大規(guī)模的小文件存儲與讀取,磁頭需要頻繁的尋道和換道,因此在讀取上容易帶來較長的延時。這就給淘寶網(wǎng)的系統(tǒng)帶來了一個巨大的挑戰(zhàn)。傳統(tǒng)的存儲架構(gòu)由于擴展性較差,當(dāng)用戶量及性能需求增加時,只能一味地添加高端存儲設(shè)備。長此以往,存儲環(huán)境就會變得日益復(fù)雜,管理和運營成本更高,并造成了過高的能源消耗。同時,過于復(fù)雜的存儲架構(gòu)和備份方式也很難滿足用戶日漸增長的數(shù)據(jù)管理和容災(zāi)需求。而云存儲作為一種新興的技術(shù)理念,正在改變著傳統(tǒng)存儲的提供與使用方式,也對存儲行業(yè)帶來了深遠影響。經(jīng)過長時間的摸索,我們發(fā)現(xiàn)這些具有海量存儲需求的用戶,只有應(yīng)用了更低成本、具有更高可擴展性的云數(shù)據(jù)管理體系,才能滿足其爆炸性增長的存儲需求。
4.2 系統(tǒng)設(shè)計目標
為了解決大規(guī)模小圖片文件的高效存儲和訪問的問題,我們在己有的云平臺上設(shè)計并實現(xiàn)了一個高可擴展、高可靠的海量圖片存儲、管理系統(tǒng)。該系統(tǒng)的設(shè)計目標:
1)大規(guī)模、支持靈活擴展
我們要構(gòu)建的圖片云存儲系統(tǒng)能夠支持TB規(guī)模的存儲容量,且非常容易進行擴展,整個擴展過程又不能影響服務(wù)的持續(xù)運行。這樣圖片云存儲系統(tǒng)良好的伸縮性可以讓使用的用戶靈活的投資存儲基礎(chǔ)架構(gòu),減少投資風(fēng)險。
2)高可靠性
在用戶實際應(yīng)用環(huán)境中,各種不同類型的軟硬件故障發(fā)生的概率非常大,如硬件損壞、網(wǎng)絡(luò)中斷、系統(tǒng)崩潰等異常都會引起存儲服務(wù)中斷,甚至造成數(shù)據(jù)丟失。圖片云系統(tǒng)是一個構(gòu)建在云之上的海量圖片存儲管理系統(tǒng),因此它可利用云計算環(huán)境一些特有的容錯性來保障服務(wù)的高可靠性。
4.3 系統(tǒng)體系結(jié)構(gòu)設(shè)計
根據(jù)上述設(shè)計目標,圖片云系統(tǒng)應(yīng)該是一個能夠提供海量存儲空間,并支持靈活擴展、高性能訪問以及容災(zāi)和備份的圖片文件存儲管理平臺。其系統(tǒng)結(jié)構(gòu)由客戶端(ClientAgent,CA)、負載均衡服務(wù)器(Load Balancing Server,LBS)、元數(shù)據(jù)服務(wù)器(Meta data Server,MDS)和對象存儲節(jié)點(ObjectStorage Node.簡稱OSN)4大部分組成。
客戶端(CA)向外為客戶提供各種應(yīng)用服務(wù),CA安裝在用戶服務(wù)器上。用戶通過CA訪問系統(tǒng),進行讀、寫、修改等操作。如萬維網(wǎng)服務(wù)、數(shù)據(jù)庫、文件服務(wù)、科學(xué)計算等。
負載均衡服務(wù)器(LBS)位于客戶端與元數(shù)據(jù)管理服務(wù)器集群的中間。LBS在這個位置上除了能夠支持系統(tǒng)的水平伸縮外,還能夠保證大量客戶高效、穩(wěn)定的訪問該系統(tǒng)。多臺元數(shù)據(jù)管理服務(wù)器都部署上CouchDB數(shù)據(jù)庫,因此每臺機器都能向外提供相同的服務(wù)。如當(dāng)客戶端發(fā)出請求時,LBS會根據(jù)下一層各元數(shù)據(jù)管理服務(wù)器的負載情況來將請求分留給適合的元數(shù)據(jù)管理服務(wù)器,達到集群負載均衡的目的,這樣當(dāng)請求的數(shù)量比較大的時候,就不會出現(xiàn)請求長時間不被處理,因而客戶對系統(tǒng)的訪問就會更高效。
元數(shù)據(jù)服務(wù)器(MDS)部署著CouchDB數(shù)據(jù)庫,它管理著整個系統(tǒng)的元數(shù)據(jù)和對象數(shù)據(jù)的布局信息,數(shù)據(jù)庫用來存儲圖片文件系統(tǒng)中所有的元數(shù)據(jù),包括圖片名稱、圖片規(guī)格、訪問控制信息、存儲位置等。
傳統(tǒng)的存儲集群系統(tǒng)里元數(shù)據(jù)存儲只有一份,通常由中心節(jié)點來管理,因而很容易成為系統(tǒng)的瓶頸。對于圖片云系統(tǒng),不存在中心管理節(jié)點,元數(shù)據(jù)存儲在無中心的、完全分布式的元數(shù)據(jù)服務(wù)器集群中。集群中的元數(shù)據(jù)服務(wù)器都是完全對等的,通過CouchDB的相互備份,使得系統(tǒng)讀寫性能大大增強,且易于擴展。
對象存儲節(jié)點(OSN)用來存儲用戶的圖片。每個存儲節(jié)點都是獨立的存儲設(shè)備,負責(zé)對象數(shù)據(jù)的存儲、備份、遷移和恢復(fù),并負責(zé)監(jiān)控其它存儲設(shè)備的運行狀況和資源情況。同時,存儲節(jié)點上運行著虛擬化存儲管理軟件,并存儲了應(yīng)用程序所需的數(shù)據(jù)。
當(dāng)用戶訪問該系統(tǒng)時,首先會向CA以Web Service形式提供一個數(shù)據(jù)庫請求(增、刪、改、查),并提供一個UUID;該系統(tǒng)的核心管理模塊MDS根據(jù)UUID得出要訪問的元數(shù)據(jù)服務(wù)器節(jié)點ID和要訪問的圖片ID:之后MDS會訪問CouchDB中對應(yīng)的元數(shù)據(jù)信息,讀取圖片存儲位置信息,然后便直接訪問對應(yīng)的OSN完成數(shù)據(jù)存取或訪問等操作;在該過程中,有效地防止了MDS負載過重,大大提高了系統(tǒng)效率。
4.4 系統(tǒng)功能分析
基于云計算環(huán)境的高可擴展、高可靠的海量圖片存儲管理系統(tǒng)旨在為用戶提供一個解決海量圖片存儲的平臺。平臺通過提供公用的訪問接口,和客戶端的各種應(yīng)用程序組成一個復(fù)雜的系統(tǒng),通過應(yīng)用程序來對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問服務(wù)。系統(tǒng)包括數(shù)據(jù)管理模塊和平臺管理模塊兩部分,平臺管理模塊包括數(shù)據(jù)備份和數(shù)據(jù)遷移。數(shù)據(jù)管理模塊包括圖片存儲、圖片刪除、圖片信息查看和圖片信息更新。具體功能結(jié)構(gòu)如圖1所示。
其中,元數(shù)據(jù)管理模塊的具體功能就是實現(xiàn)對圖片的存儲、查看、更新和刪除4個基本功能,是提供給客戶端的可見的功能;而平臺管理模塊則是為實現(xiàn)系統(tǒng)的可擴展性和高可靠性而提供的一種內(nèi)部機制,其中數(shù)據(jù)備份主要是通過使用冗余機制來保證文件系統(tǒng)的數(shù)據(jù)不會丟失,例如發(fā)生一臺MDS突然崩潰,這時多點備份就可以保證整個系統(tǒng)還能夠繼續(xù)正常運行,用戶的操作不會受到影響。在圖片云系統(tǒng)中,數(shù)據(jù)備份主要是通過元數(shù)據(jù)管理服務(wù)器的分布式復(fù)制來實現(xiàn)的。
元數(shù)據(jù)管理界面采用完全分布式的元數(shù)據(jù)管理服務(wù)器集群,每臺元數(shù)據(jù)管理服務(wù)器上都部署上CouchDB數(shù)據(jù)庫。該模塊主要管理圖片存儲系統(tǒng)的元數(shù)據(jù)和進行存儲對象的分配和布局。元數(shù)據(jù)管理包括圖片文件名稱、格式、大小、創(chuàng)建時間、訪問權(quán)限、存儲位置等等。
數(shù)據(jù)遷移主要是實現(xiàn)數(shù)據(jù)在不同的存儲節(jié)點之間的遷移。例如,當(dāng)系統(tǒng)中的一臺服務(wù)器需要暫時停止工作進行維護,而它上面的數(shù)據(jù)還希望能夠被訪問,從而不會影響整個系統(tǒng)的正常運行,那么這個時候就需要將該服務(wù)器上的數(shù)據(jù)動態(tài)(不需要停服務(wù)器)的完全復(fù)制到另外一臺備用服務(wù)器上,此過程對客戶端是透明的,即客戶端完全不知道系統(tǒng)發(fā)生了什么。該系統(tǒng)中,數(shù)據(jù)遷移的實現(xiàn)主要依賴于元數(shù)據(jù)管理服務(wù)器上CouchDB的分布式復(fù)制和完全同步機制。
在該系統(tǒng)中,負載均衡我們采用軟件技術(shù)來實現(xiàn),主要通過在客戶端和元數(shù)據(jù)管理服務(wù)器集群中間添加一臺機器作為負載均衡服務(wù)器,而負載均衡服務(wù)器上部署Apache服務(wù)器,基于Apache的mod_jk和mod_Proxy來實現(xiàn)負載均衡。例如,當(dāng)客戶端發(fā)出請求時,LBS會根據(jù)負載均衡算法來將請求分留給適當(dāng)?shù)脑獢?shù)據(jù)管理服務(wù)器,達到集群負載均衡的目的,這樣當(dāng)請求的數(shù)量比較大的時候,就不會出現(xiàn)請求長時一間不被處理的情況,從而實現(xiàn)高效訪問。
為了解決海量小圖片存儲管理的高可靠性和高可擴展性的問題,構(gòu)建了圖片云系統(tǒng)作為一個分布式的海量圖片存儲管理系統(tǒng),它在分布式環(huán)境下的讀寫性能是評價該系統(tǒng)的一個主要指標。影響該系統(tǒng)讀寫性能的主要體現(xiàn)有兩部分,一個是負載均衡模塊,一個是CouchDB本身的讀寫性能。
4.5 性能測試
Apache Jmeter是一款開源的性能測試框架,現(xiàn)己廣泛地作為Web應(yīng)用程序的性能測試工具,本文采用ApacheJmeter對該系統(tǒng)進行壓力測試。測試場景分別在有負載均衡和沒有負載均衡的情況下,用Jmeter模擬100個客戶端并發(fā)的發(fā)出查詢請求,沒有負載均衡情況下的測試結(jié)果:100條查詢請求執(zhí)行結(jié)果全部通過,平均響應(yīng)時間為182ms。有負載均衡情況下的測試結(jié)果:100條查詢請求執(zhí)行結(jié)果全部通過,平均響應(yīng)時間為99ms。通過上述測試結(jié)果的比對,并發(fā)執(zhí)行100條查詢請求,在有負載均衡的情況下,系統(tǒng)的響應(yīng)時間要快于沒有負載均衡的情況,這正是由于系統(tǒng)中負載均衡的功能就是在出現(xiàn)大量并發(fā)訪問的時候,負載均衡服務(wù)器會根據(jù)當(dāng)前系統(tǒng)各服務(wù)器的狀態(tài)來進行請求的轉(zhuǎn)發(fā),即先把請求發(fā)給相對比較空閑的服務(wù)器,這樣就能充分利用分布式服務(wù)的優(yōu)勢,提高訪問效率。
5 結(jié)束語
云計算技術(shù)的出現(xiàn),使人們有更多的時間關(guān)注專業(yè)領(lǐng)域內(nèi)的問題,使空間信息服務(wù)模式發(fā)生了革命性的改變。應(yīng)用云計算的思想,借鑒傳統(tǒng)數(shù)據(jù)管理技術(shù)的經(jīng)驗,設(shè)計面向云計算環(huán)境的海量圖片存儲管理系統(tǒng),提高了存儲系統(tǒng)的可靠性和穩(wěn)定性,而且在完全分布式環(huán)境下性能上也具有一定的優(yōu)勢,具有很好的應(yīng)用前景。
評論