隨著現(xiàn)代社會信息技術(shù)的發(fā)展以及人類生活的智能化,全球數(shù)據(jù)量正在無限制地擴(kuò)展和增加。傳統(tǒng)存儲雖然有技術(shù)成熟、性能良好、可用性高等優(yōu)點,但面對海量數(shù)據(jù),其缺點也越來越明顯:如擴(kuò)展性差、成本高等。
為了克服上述缺點,滿足海量數(shù)據(jù)的存儲需求,市場上出現(xiàn)了分布式存儲技術(shù)。分布式存儲的興起與互聯(lián)網(wǎng)的發(fā)展密不可分,互聯(lián)網(wǎng)公司由于其大數(shù)據(jù)、輕資產(chǎn)的特點,通常使用大規(guī)模分布式存儲系統(tǒng)。
本篇文章會和讀者朋友們聊一聊,目前市場上一些主流的分布式存儲存儲框架。
分布式存儲技術(shù)
1.什么是分布式存儲
在了解什么是分布式存儲之前,我們先來了解一下存儲幾十年來的大概歷程。
直連存儲(DAS):存儲和數(shù)據(jù)直連,拓展性、靈活性差。
中心化存儲(SAN、NAS):設(shè)備類型豐富,通過IP/FC網(wǎng)絡(luò)互連,具有一定的拓展性,但是受到控制器能力限制,拓展能力有限。同時,設(shè)備到了生命周期要進(jìn)行更換,數(shù)據(jù)遷移需要耗費大量的時間和精力。
分布式存儲:基于標(biāo)準(zhǔn)硬件和分布式架構(gòu),實現(xiàn)千節(jié)點/EB級擴(kuò)展,同時可以對塊、對象、文件等多種類型存儲統(tǒng)一管理。
分布式存儲就是將數(shù)據(jù)分散存儲到多個存儲服務(wù)器上,并將這些分散的存儲資源構(gòu)成一個虛擬的存儲設(shè)備,實際上數(shù)據(jù)分散的存儲在企業(yè)的各個角落。
打個簡單的比方,將數(shù)據(jù)比作成貨物,存儲比作成貨車,直連存儲就相當(dāng)于用普通貨車?yán)洠粸榱颂嵘浀男?,改用大型的貨車?yán)?,這就相當(dāng)于中心化存儲;現(xiàn)在,由于貨物太多,大型的貨車已經(jīng)不足以拉動全部貨物,改用一節(jié)一節(jié)連接起來的火車?yán)?,這就是分布式存儲。分布式系統(tǒng)的出現(xiàn)是為了用普通的機(jī)器完成單個計算機(jī)無法完成的計算、存儲任務(wù),目的是利用更多的機(jī)器,處理更多的數(shù)據(jù)。
2.分布式存儲的優(yōu)勢
可擴(kuò)展:分布式存儲系統(tǒng)可以擴(kuò)展到數(shù)百甚至數(shù)千個這樣的集群大小,并且系統(tǒng)的整體性能可以線性增長。
低成本:分布式存儲系統(tǒng)的自動容錯和自動負(fù)載平衡允許在低成本服務(wù)器上構(gòu)建分布式存儲系統(tǒng)。此外,線性可擴(kuò)展性還能夠增加和降低服務(wù)器的成本,并實現(xiàn)分布式存儲系統(tǒng)的自動操作和維護(hù)。
高性能:無論是針對單個服務(wù)器還是針對分布式存儲群集,分布式存儲系統(tǒng)都需要高性能。
分布式存儲框架
分布式存儲技術(shù)的實現(xiàn),往往離不開底層的分布式存儲框架。根據(jù)其存儲的類型,可分為塊存儲,對象存儲和文件存儲。在主流的分布式存儲技術(shù)中,HDFS屬于文件存儲,Swift屬于對象存儲,而Ceph可支持塊存儲、對象存儲和文件存儲,故稱為統(tǒng)一存儲。
1.HDFS
HDFS是Hadoop核心組成之一,是分布式計算中數(shù)據(jù)存儲管理的基礎(chǔ),被設(shè)計成適合運行在通用硬件上的分布式文件系統(tǒng)。
1.1 HDFS的功能模塊
Client
Client是用戶與HDFS交互的手段,當(dāng)文件上傳 HDFS 的時候,Client 將文件切分成一個一個的 Block,然后進(jìn)行上傳;Client通過與NameNode 交互,來獲取文件的位置信息;與 DataNode 交互,讀取或者寫入數(shù)據(jù);Client還可以提供NameNode格式化等一些命令來管理HDFS;同時,Client可以通過對HDFS的增刪改查等操作來訪問HDFS。
NameNode
NameNode就是HDFS的Master架構(gòu),它維護(hù)著文件系統(tǒng)樹及整棵樹內(nèi)所有的文件和目錄,HDFS文件系統(tǒng)中處理客服端讀寫請求、管理數(shù)據(jù)塊(Block)的映射信息、配置副本策略等管理工作由NameNode來完成。
DataNode
NameNode 下達(dá)命令,DataNode 執(zhí)行實際操作。DataNode表示實際存儲的數(shù)據(jù)塊,同時可以執(zhí)行數(shù)據(jù)塊的讀寫操作。
Secondary NameNode
Secondary NameNode的功能主要是輔助NameNode,分擔(dān)其工作量;在緊急情況下可以輔助恢復(fù)NameNode,但是它不能替換NameNode并提供服務(wù)。
1.2 HDFS的優(yōu)勢
1.容錯性:數(shù)據(jù)自動保存多個副本。通過增加副本的形式,提高容錯性。其中一個副本丟失以后,可以自動恢復(fù)。
2.可以處理大數(shù)據(jù):能夠處理數(shù)據(jù)規(guī)模達(dá)到GB、TB甚至PB級別的數(shù)據(jù);能夠處理百萬規(guī)模以上的文件數(shù)量。
3.可以構(gòu)建在廉價的機(jī)器上,通過多副本機(jī)制,提高可靠性。
1.3 HDFS的缺點
1.不適合低延時數(shù)據(jù)訪問:比如毫秒級的存儲數(shù)據(jù),是做不到的。
2.無法高效對大量小文件進(jìn)行存儲:存儲大量小文件的話,它會占用 NameNode 大量的內(nèi)存來存儲文件目錄和塊信息。這樣是不可取的,因為 NameNode的內(nèi)存總是有限的。同時,小文件存儲的尋址時間會超過讀取時間,它違反了HDFS的設(shè)計目標(biāo)。
3.不支持并發(fā)寫入、文件隨機(jī)修改:一個文件只能有一個寫,不允許多個線程同時寫。僅支持?jǐn)?shù)據(jù) append(追加),不支持文件的隨機(jī)修改。
2.Swift
swift于2008年起步,最初是由Rackspace公司開發(fā)的分布式對象存儲服務(wù), 2010 年貢獻(xiàn)給 OpenStack 開源社區(qū)?,F(xiàn)如今已部署到大規(guī)模公有云的生產(chǎn)環(huán)境中使用。
2.1 Swift的功能模塊
Swift 采用完全對稱、面向資源的分布式系統(tǒng)架構(gòu)設(shè)計,所有組件都可擴(kuò)展,避免因單點失效而影響整個系統(tǒng)的可用性。
Proxy Server(代理服務(wù)):對外提供對象服務(wù) API,Proxy Server首先會通過Ring查找被操作實體的物理位置,隨后將請求轉(zhuǎn)發(fā)至相應(yīng)的賬戶、容器或?qū)ο蠓?wù)。
Authentication Server(認(rèn)證服務(wù)):驗證用戶的身份信息,并獲得一個訪問令牌(Token)。
Cache Server(緩存服務(wù)):緩存令牌,賬戶和容器信息,但不會緩存對象本身的數(shù)據(jù)。
Account Server(賬戶服務(wù)):Account Server是存儲節(jié)點中負(fù)責(zé)處理Account的get、head、put、delete、relication請求的服務(wù)進(jìn)程。提供賬戶元數(shù)據(jù)和統(tǒng)計信息,并維護(hù)所含容器列表的服務(wù)。
Container Server(容器服務(wù)):Container Server是存儲節(jié)點中負(fù)責(zé)處理Container的get、head、put、delete、relication請求的服務(wù)進(jìn)程。提供容器元數(shù)據(jù)和統(tǒng)計信息,并維護(hù)所含對象列表的服務(wù)。
Object Server(對象服務(wù)):Object Server就是一個簡單的BLOB存儲服務(wù)器,可以存儲、檢索和刪除保存再本地設(shè)備的對象。提供對象元數(shù)據(jù)和內(nèi)容服務(wù),每個對象會以文件存儲在文件系統(tǒng)中。
Replicator(復(fù)制服務(wù)):檢測本地副本和遠(yuǎn)程副本是否一致,采用推式(Push)更新遠(yuǎn)程副本。
Updater(更新服務(wù)):對象內(nèi)容的更新。
Auditor(審計服務(wù)):檢查對象、容器和賬戶的完整性,如果發(fā)現(xiàn)錯誤,文件將被隔離。
Account Reaper(賬戶清理服務(wù)):移除被標(biāo)記為刪除的賬戶,刪除其所包含的所有容器和對象。
2.2 Swift的技術(shù)特點
1.Swift的數(shù)據(jù)模型采用層次結(jié)構(gòu),共設(shè)三層:Account/Container/Object(即賬戶/容器/對象),每層節(jié)點數(shù)均沒有限制,可以任意擴(kuò)展。
2.Swift是基于一致性散列技術(shù),通過計算將對象均勻分布在虛擬空間的虛擬節(jié)點上,在增加、刪除節(jié)點時可以大大減少需移動的數(shù)據(jù)量;通過獨特的數(shù)據(jù)結(jié)構(gòu) Ring(環(huán)),再將虛擬節(jié)點映射到實際的物理存儲設(shè)備上,完成尋址過程。
3.Swift為賬戶、容器和對象分別定義了的環(huán)。環(huán)是為了將虛擬節(jié)點(分區(qū))映射到一組物理存儲設(shè)備上,并提供一定的冗余度而設(shè)計的,環(huán)的數(shù)據(jù)信息包括存儲設(shè)備列表和設(shè)備信息、分區(qū)到設(shè)備的映射關(guān)系、計算分區(qū)號的位移。
2.3 Swift的優(yōu)點
1.極高的數(shù)據(jù)持久性
2.完全對稱的系統(tǒng)架構(gòu)
3.無限的可擴(kuò)展性
4.無單點故障
5.是OpenStack的子項目之一,適合云環(huán)境的部署
2.4 Swift的缺點
原生的對象存儲,不支持實時的文件讀寫、編輯功能
3.Ceph
Ceph最早起源于Sage就讀博士期間的工作、成果于2004年發(fā)表,并隨后貢獻(xiàn)給開源社區(qū)。經(jīng)過十幾年的發(fā)展,已成為應(yīng)用最廣泛的開源分布式存儲平臺。
3.1 Ceph的主要架構(gòu)
基礎(chǔ)存儲系統(tǒng)RADOS
Ceph的最底層是RADOS(分布式對象存儲系統(tǒng)),它具有可靠、智能、分布式等特性,實現(xiàn)高可靠、高可拓展、高性能、高自動化等功能,并最終存儲用戶數(shù)據(jù)。RADOS系統(tǒng)主要由Ceph OSD、Ceph Monitors兩部分組成,Ceph OSD 的功能是存儲數(shù)據(jù),處理數(shù)據(jù)的復(fù)制、恢復(fù)、回填、再均衡,并通過檢查其他OSD 守護(hù)進(jìn)程的心跳來向 Ceph Monitors 提供一些監(jiān)控信息。Ceph Monitor維護(hù)著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。
基礎(chǔ)庫LIBRADOS
LIBRADOS層的功能是對RADOS進(jìn)行抽象和封裝,并向上層提供API,以便直接基于RADOS進(jìn)行應(yīng)用開發(fā)。RADOS是一個對象存儲系統(tǒng),因此,LIBRADOS實現(xiàn)的API是針對對象存儲功能的。物理上,LIBRADOS和基于其上開發(fā)的應(yīng)用位于同一臺機(jī)器,因而也被稱為本地API。應(yīng)用調(diào)用本機(jī)上的LIBRADOS API,再由后者通過socket與RADOS集群中的節(jié)點通信并完成各種操作。
上層應(yīng)用接口
Ceph上層應(yīng)用接口涵蓋了RADOSGW(RADOS Gateway)、RBD(Reliable Block Device)和Ceph FS(Ceph File System),其中,RADOSGW和RBD是在LIBRADOS庫的基礎(chǔ)上提供抽象層次更高、更便于應(yīng)用或客戶端使用的上層接口。
應(yīng)用層
應(yīng)用層就是不同場景下對于Ceph各個應(yīng)用接口的各種應(yīng)用方式,例如基于LIBRADOS直接開發(fā)的對象存儲應(yīng)用,基于RADOSGW開發(fā)的對象存儲應(yīng)用,基于RBD實現(xiàn)的云主機(jī)硬盤等。
3.2 Ceph的功能模塊
Client客戶端:負(fù)責(zé)存儲協(xié)議的接入,節(jié)點負(fù)載均衡。
MON監(jiān)控服務(wù):負(fù)責(zé)監(jiān)控整個集群,維護(hù)集群的健康狀態(tài),維護(hù)展示集群狀態(tài)的各種圖表,如OSD Map、Monitor Map、PG Map和CRUSH Map。
MDS元數(shù)據(jù)服務(wù):負(fù)責(zé)保存文件系統(tǒng)的元數(shù)據(jù),管理目錄結(jié)構(gòu)。
OSD存儲服務(wù):主要功能是存儲數(shù)據(jù)、復(fù)制數(shù)據(jù)、平衡數(shù)據(jù)、恢復(fù)數(shù)據(jù),以及與其它OSD間進(jìn)行心跳檢查等。一般情況下一塊硬盤對應(yīng)一個OSD。
3.3 Ceph的優(yōu)點
1.CRUSH算法
CRUSH算法是ceph的兩大創(chuàng)新之一,簡單來說,ceph摒棄了傳統(tǒng)的集中式存儲元數(shù)據(jù)尋址的方案,轉(zhuǎn)而使用CRUSH算法完成數(shù)據(jù)的尋址操作。采用CRUSH算法,數(shù)據(jù)分布均衡,并行度高,不需要維護(hù)固定的元數(shù)據(jù)結(jié)構(gòu)。
2.高可用
Ceph中的數(shù)據(jù)副本數(shù)量可以由管理員自行定義,并可以通過CRUSH算法指定副本的物理存儲位置以分隔故障域,支持?jǐn)?shù)據(jù)強(qiáng)一致性,適合讀多寫少場景;ceph可以忍受多種故障場景并自動嘗試并行修復(fù)。
3.高擴(kuò)展性
Ceph本身并沒有主控節(jié)點,擴(kuò)展起來比較容易,并且理論上,它的性能會隨著磁盤數(shù)量的增加而線性增長。
4.特性豐富
Ceph支持對象存儲、塊存儲和文件存儲服務(wù),故稱為統(tǒng)一存儲
3.4 Ceph的缺點
1.去中心化的分布式解決方案,需要提前做好規(guī)劃設(shè)計,對技術(shù)團(tuán)隊的要求能力比較高。
2.Ceph擴(kuò)容時,由于其數(shù)據(jù)分布均衡的特性,會導(dǎo)致整個存儲系統(tǒng)性能的下降。
BMJ分布式存儲
BMJ是一個高速、安全、可拓展的區(qū)塊鏈基礎(chǔ)設(shè)施項目。面向5G,對IPFS底層技術(shù)深度開發(fā)及優(yōu)化,通過切片技術(shù)對節(jié)點的P2P傳輸,實現(xiàn)數(shù)百兆文件的秒傳。從全新的角度出發(fā),BMJ基于區(qū)塊鏈的分布式云存儲系統(tǒng)設(shè)計思想提出新的方案,在數(shù)據(jù)傳輸方面引入數(shù)據(jù)交換機(jī)制和秒傳機(jī)制來提高數(shù)據(jù)傳輸速度;在數(shù)據(jù)存儲方面,通過采用一種高效的數(shù)據(jù)存儲架構(gòu)來提高數(shù)據(jù)存儲效率。
作為分布式存儲的領(lǐng)航者,BMJ目前正在快速布局,未來形成包括云存儲、云計算、大數(shù)據(jù)的產(chǎn)業(yè)集群,可以更好的引領(lǐng)傳統(tǒng)企業(yè)升級轉(zhuǎn)型,推動整個新經(jīng)濟(jì)的發(fā)展。
為存儲而來,為服務(wù)而生,BMJ正在悄然地改變著整個世界,改變你我的生活。
?責(zé)任編輯人:CC
評論