王昱彬 江蘇有線網絡發展有限責任公司吳江分公司
隨著信息化和網絡技術的不斷發展,互聯網上的信息越來越呈現出多樣性和關聯性,存儲平臺需要處理的數據不再是簡單的文本、圖像等數據,可能是一段短視頻、一個表情、一段語音等各種多媒體的信息,并且這些信息之間可能存在關聯性。例如:一條轉發的微信公眾號消息,就包含了標題、文本、圖片、GIF動畫、視頻、評論和回復等要素。因此,對于存儲平臺來說,不僅要能夠存儲這些數據本身,還要能夠對相關的信息集合進行關聯。
為解決這些巨量、非結構化和相互關聯的數據存儲及管理問題,需要構建一個統一的、非結構化的云存儲平臺。該平臺可以實現統一的對外存儲接口,實現高效率的數據存儲,并且便于對存儲數據的訪問應用。
根據我公司對存儲業務的需求,對云存儲平臺有以下需求:
(1)支持大量非結構化數據的存儲;
(2)設計統一的存儲服務,兼容公司原有存儲方式;
(3)兼顧經濟性和實用性。
我們對目前的幾種存儲方案進行了比較:
(1)傳統文件系統和存儲介質
是一種簡單直接的存儲方式,直接依賴于計算機操作系統的文件系統,因為沒有附加的軟件,門檻比較低,不需要專業的維護人員。缺點是數據的索引難、數據的安全性、完整性、備份等問題都很困難。現在有些單位會將數據備份在大容量藍光盤等存儲設備中,這種方式管理起來不太靈活,需要調取數據的時候流程復雜,難以控制,容易出現操作風險。
(2)關系型分布式數據庫系統
這是一種關系型數據庫與分布式技術結合的存儲方式。從物理上看,數據存儲是分布在不同地方的存儲單元,但是邏輯上是一套系統,通過設置一定冗余,提高了系統整體可靠性和性能。這種系統經過多年商業使用,已經被證明十分可靠,廣泛使用在銀行等大型系統中。這類系統對技術人員要求很高,需要一支專業團隊來維護。在信息爆炸的時代,大量的非結構化數據的出現,特別是達到PB級后,這種類型的數據庫在實際應用中也出現了一系列問題。
(3)非結構化云存儲技術
對于目前非結構化數據大量增長的情況,國內外出現大量的對這種類型數據進行存儲技術的研究開發,尋找能夠有效管理海量非結構化數據的解決方案。相對于關系型數據庫模型的較為統一,非結構化的數據模型目前還是呈現“五花八門”的形態,沒有一款主流的模型出現。
本文根據目前有線網絡公司在運營過程中非結構化數據的存儲需求,嘗試探索與本公司實際要求相適應的云存儲技術解決方案。
(1)分布式文件系統
① HDFS:通常來說HDFS可以支持分割操作,所以可支持很大的數據文件,分塊后的數據塊會存在備份,其備份和分布式特點,保障了數據的安全和訪問的效率。HDFS的設計是元數據存儲在NameNode內存中,有限的尋址能力導致其不適合存儲海量的小文件。
② FastDFS:相比HDFS來說更加輕量級,FastDFS更適用于中小型數據文件的存儲管理。FastDFS支持冗余備份,但簡化了存儲和備份的機制,取消分塊,元數據由文件名存儲,系統體量小。
(2)非結構化數據庫
① HBase:由于面向的是海量的非結構化數據,所以最好能夠采用分布式云存儲技術,而且由于公司體量的限制,希望采用相對比較低廉的價格維護更多的數據,因為Apache的HBase分布式數據庫特點和這次設計的需求較為符合,所以在非結構化數據庫中選擇了HBase。
(3)其他數據庫
① Oracle:公司原有的重要系統數據庫以Oracle為主,所以存儲平臺需要兼容原有的系統。
② XmlDB:專門用來存儲結構化xml的高性能數據庫。
云存儲系統主要包含四個部分。云存儲平臺架構如圖1所示。
(1)服務端的服務調度器和服務節點,用于向客戶端提供數據服務。
(2)由于對外采用分布式架構提供服務,所以采用分布式協調器zookeeper來進行服務的協調。
(3)服務端與MapReduce計算集群進行對接,系統可獲得很強的計算和數據處理能力。
(4)在整個系統的底層,是文件系統和數據庫集群,包含:HDFS和FastDFS兩種分布式文件系統、HBase分布式數據庫、Oracle數據庫集群、DocumentDB集群、XmlDB集群等。
由于通過統一的服務端向客戶端提供服務,對于用戶來說,只需連接服務節點就可以提交數據的處理任務,并不需要考慮底層的文件系統和數據庫的異構存儲實現。而對于底層的數據存儲來說,我們也設計了統一的存儲結構,對數據進行落地存儲。
統一的存儲管理包含二進制數據的管理、數據對象的管理兩方面的功能。
(1)二進制數據管理
二進制數據管理分為元數據和一般二進制文件兩個部分。元數據是描述數據本身信息的數據,例如:數據的類型、大小、更新時間、特征和屬性等,對于數據的查詢、更新以及索引、分析都有很重要的意義,通常以表的形式來存儲,我們將系統元數據統一存儲到HBase中。我們在一般二進制文件的上載服務中設定了文件大小閾值,一般設置為500MB,根據大小的不同,調用不同的數據庫訪問API,低于閾值的,存儲到FastDFS中,反之,存儲HDFS中,查詢時,根據統一的查詢接口,分別到HBase和FastDFS中去查詢得到結果。節點數據的同步在分布式存儲中是一個重要問題,我們在統一存儲服務程序中增加了緩存機制,用以控制分布式各個節點之間的數據同步,通過分布式協調器zookeeper,一旦本節點元數據發生改變,就會立即通知其他節點進行緩存數據的更新同步,提高了處理的效率。
(2)數據對象的管理
由于存儲接口是統一的,我們對結構化數據和非結構化數據采取了不同的處理方式。對于結構化數據,兼顧了公司原有的數據庫系統,采用Oracle的數據庫驅動,支持其他系統數據表的導入;對于非結構化的數據,利用HBase數據庫加以存儲,具備了高可用性和高可靠性。另外系統還支持XmlBlob數據的存儲,通過分析結構化的Xml數據,使用XmlDB進行高效的存取。

圖 1 云存儲平臺架構
本文主要分析了有線網絡公司工作中需要存儲海量非結構化數據的解決方案,針對實際工作中的需要,設計了一套云存儲平臺,對不同類型的數據采用了統一存儲接口,在底層可以實現異構存儲,具有高效存儲和高可用性的特點。
數據的存儲只是第一步,對于存儲的數據如何進行有效檢索利用,并且能夠挖掘其潛在的價值,是后續開展研究工作的重點。