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