科普 | 分布式存儲的特點(diǎn)

H恒星存儲礦機(jī)
如果一個(gè)文件的數(shù)據(jù)量比較小,那么一臺機(jī)器就很容易完成存儲,但當(dāng)這個(gè)文件的數(shù)據(jù)量越來越大的時(shí)候,這臺機(jī)器就可能存儲不下,畢竟一臺機(jī)器的容量是有限的,那這個(gè)時(shí)候怎么辦呢?此時(shí)就需要分布式的存儲。

正如大家所了解的分布式存儲解決的就是大量數(shù)據(jù)存儲的問題。那這個(gè)量一般是多少呢?這個(gè)量一般是TB、PB級別,即:

敲黑板,劃重點(diǎn)

1PB=1024TB

1TB=1024GB

1GB=1024M

01、數(shù)據(jù)分塊

分布式存儲的第一個(gè)特點(diǎn):數(shù)據(jù)分塊,分布式的存儲在多態(tài)機(jī)器上。

如果一個(gè)文件的數(shù)據(jù)量比較小,那么一臺機(jī)器就很容易完成存儲,但當(dāng)這個(gè)文件的數(shù)據(jù)量越來越大的時(shí)候,這臺機(jī)器就可能存儲不下,畢竟一臺機(jī)器的容量是有限的,那這個(gè)時(shí)候怎么辦呢?此時(shí)就需要分布式的存儲。

例如,我們現(xiàn)在有一個(gè)大文件,它的數(shù)據(jù)量是5PB。這個(gè)時(shí)候一臺機(jī)器肯定是存儲不下的。那我們可以將這5PB的數(shù)據(jù)文件劃分成若干個(gè)小塊,假設(shè)每一個(gè)塊的大小是256M,那么5PB的數(shù)據(jù)文件就被劃分成20971520個(gè)數(shù)據(jù)塊,我們可以將這些數(shù)據(jù)塊分布式的存儲在1000臺機(jī)器上(假設(shè)每臺機(jī)器的磁盤容量是10TB),大約每一臺機(jī)器存儲2萬多一點(diǎn)的數(shù)據(jù)塊。

02、數(shù)據(jù)塊冗余存儲可以提高可用性

分布式存儲的第二個(gè)特點(diǎn):數(shù)據(jù)塊冗余存儲在多臺機(jī)器以提高數(shù)據(jù)塊的高可用性。

假設(shè)上文的1000臺機(jī)器中有一臺機(jī)器掛掉了,那么存在于這臺機(jī)器上的數(shù)據(jù)塊都不能對外提供服務(wù)了,這樣的話5PB的文件的數(shù)據(jù)就不完整了。那么為了解決這個(gè)問題,我們可以將每一個(gè)數(shù)據(jù)塊再備份一次,然后兩個(gè)相同的數(shù)據(jù)塊分別存儲在不同的機(jī)器上,如此的話一個(gè)數(shù)據(jù)塊所在的機(jī)器掛了,那么另一個(gè)機(jī)器上的相同的數(shù)據(jù)塊還可以對外提供服務(wù)。這樣做就提高了數(shù)據(jù)塊的高可用性。

2345截圖20201119114036.png

現(xiàn)在問題又來了,這么多的機(jī)器節(jié)點(diǎn)以及存儲在機(jī)器節(jié)點(diǎn)上的這么多數(shù)據(jù)塊該怎么管理呢?我們可以在另外的一臺服務(wù)器上啟動(dòng)一個(gè)JVM進(jìn)程,這個(gè)JVM進(jìn)程就是負(fù)責(zé)管理所有存儲數(shù)據(jù)的機(jī)器節(jié)點(diǎn)以及存儲在這些機(jī)器節(jié)點(diǎn)上的所有數(shù)據(jù)塊,如下圖:

2345截圖20201119114036.png

上圖中的Storage master就是負(fù)責(zé)管理所有的存儲數(shù)據(jù)的機(jī)器以及所有的數(shù)據(jù)塊,所以在Storage master中會存在:機(jī)器節(jié)點(diǎn)的信息(Node Info)以及數(shù)據(jù)塊信息(Block Info)。

03、遵從主/從結(jié)構(gòu)的分布式存儲集群

上圖中的Storage slaves就是負(fù)責(zé)數(shù)據(jù)塊的存儲,當(dāng)Storage slaves中的每一個(gè)機(jī)器啟動(dòng)了后都會將自己所含有的磁盤容量等信息告訴Storage master機(jī)器,當(dāng)每一個(gè)數(shù)據(jù)塊存儲在某個(gè)Storage slave上時(shí)都會把自己的信息告訴Storage master機(jī)器。

所以分布式存儲的第三個(gè)特點(diǎn)就是:遵從主/從(master/slave)結(jié)構(gòu)的分布式存儲集群,這里需要清楚的三點(diǎn)是:

1.在Storage master和Storage slave上都是會啟動(dòng)一個(gè)JVM進(jìn)程,在Storage master機(jī)器上,這個(gè)JVM進(jìn)程負(fù)責(zé)機(jī)器節(jié)點(diǎn)和數(shù)據(jù)塊的管理;在Storage slave上的JVM進(jìn)程負(fù)責(zé)數(shù)據(jù)塊的存儲服務(wù);

2.Storage master上的JVM進(jìn)程和Storage slave上的JVM進(jìn)程之間的通訊是通過RPC完成的。當(dāng)然兩個(gè)不同Storage slave機(jī)器上的JVM進(jìn)程也是有可能通過RPC進(jìn)行通訊的(需要將一個(gè)數(shù)據(jù)塊備份,然后將這個(gè)備份的數(shù)據(jù)塊通過RPC傳輸?shù)搅硪粋€(gè)slave機(jī)器中);

04、總結(jié)分布式存儲的特點(diǎn)

1.數(shù)據(jù)分塊,分布式的存儲在多臺機(jī)器上;

2.數(shù)據(jù)塊冗余存儲在多臺機(jī)器以提高數(shù)據(jù)塊的高可用性;

3.遵從主/從(master/slave)結(jié)構(gòu)的分布式存儲集群。

05、分布式存儲中的文件

在遵從主/從(master/slave)結(jié)構(gòu)的分布式存儲集群中,其實(shí)存在兩種類型的文件:

1.真實(shí)存放數(shù)據(jù)的文件,這類文件都是存儲在slave上的文件,我們稱之為物理文件;

2.相對于存儲在slave上的文件,那么在master上其實(shí)也有一個(gè)文件的概念,這個(gè)文件不是存儲數(shù)據(jù)的文件,它是一個(gè)邏輯文件,就是用一個(gè)文件全路徑名表示,這個(gè)文件全路徑名對應(yīng)著數(shù)據(jù)塊的存儲信息(數(shù)據(jù)塊的存儲位置等信息)。

參考資料:

https://www.cnblogs.com/tesla-turing/p/11488049.html

https://www.cnblogs.com/jichui/

https://www.cnblogs.com/jichui/p/10444394.html

THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論