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