分布式存儲(chǔ)入門認(rèn)知
分布式存儲(chǔ)是一種用于處理大規(guī)模數(shù)據(jù)的存儲(chǔ)系統(tǒng)。隨著互聯(lián)網(wǎng)的發(fā)展和數(shù)據(jù)量的爆發(fā)式增長(zhǎng),傳統(tǒng)的集中式存儲(chǔ)已經(jīng)無法滿足需求。分布式存儲(chǔ)通過將數(shù)據(jù)分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,實(shí)現(xiàn)高可靠性、高擴(kuò)展性和高性能的存儲(chǔ)解決方案
分布式存儲(chǔ)的基本原理
分布式存儲(chǔ)系統(tǒng)由多個(gè)存儲(chǔ)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)一部分?jǐn)?shù)據(jù)。數(shù)據(jù)通常被分成多個(gè)塊,并通過數(shù)據(jù)切分和冗余備份來提高容錯(cuò)性和數(shù)據(jù)可用性。節(jié)點(diǎn)之間通過網(wǎng)絡(luò)連接進(jìn)行通信和數(shù)據(jù)同步,實(shí)現(xiàn)數(shù)據(jù)的高效分布式存儲(chǔ)和訪問
分布式存儲(chǔ)的優(yōu)勢(shì)
-
高可靠性:分布式存儲(chǔ)通過數(shù)據(jù)冗余備份和故障轉(zhuǎn)移來提供高可靠性,即使某個(gè)節(jié)點(diǎn)出現(xiàn)故障,數(shù)據(jù)依然可用。
-
高擴(kuò)展性:由于數(shù)據(jù)被分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,分布式存儲(chǔ)可以方便地?cái)U(kuò)展存儲(chǔ)容量和性能,以滿足不斷增長(zhǎng)的數(shù)據(jù)需求。
-
高性能:通過將數(shù)據(jù)并行存儲(chǔ)和訪問,分布式存儲(chǔ)可以實(shí)現(xiàn)高并發(fā)和低延遲的數(shù)據(jù)訪問,提供快速的存儲(chǔ)和檢索能力。
分布式存儲(chǔ)的應(yīng)用場(chǎng)景
分布式存儲(chǔ)廣泛應(yīng)用于以下場(chǎng)景:
-
大數(shù)據(jù)分析:分布式存儲(chǔ)可以存儲(chǔ)和處理大規(guī)模的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),支持大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)等應(yīng)用。
-
云存儲(chǔ):云服務(wù)提供商使用分布式存儲(chǔ)來存儲(chǔ)用戶的數(shù)據(jù),并提供可靠的數(shù)據(jù)存儲(chǔ)和備份服務(wù)。
-
分布式文件系統(tǒng):分布式存儲(chǔ)可以用于構(gòu)建分布式文件系統(tǒng),實(shí)現(xiàn)高性能和可擴(kuò)展的文件存儲(chǔ)和訪問。
分布式存儲(chǔ)的設(shè)計(jì)考慮因素
在設(shè)計(jì)分布式存儲(chǔ)系統(tǒng)時(shí),需要考慮以下因素:
-
數(shù)據(jù)切分和負(fù)載均衡:將數(shù)據(jù)切分成適當(dāng)大小的塊,并將塊分散存儲(chǔ)在不同的節(jié)點(diǎn)上,以實(shí)現(xiàn)負(fù)載均衡和提高性能。
-
數(shù)據(jù)一致性和容錯(cuò)性:保證多個(gè)節(jié)點(diǎn)上的數(shù)據(jù)一致性,并通過冗余備份來提高容錯(cuò)性和數(shù)據(jù)可用性。
-
數(shù)據(jù)訪問和路由:設(shè)計(jì)有效的數(shù)據(jù)訪問和路由機(jī)制,以實(shí)現(xiàn)快速的數(shù)據(jù)讀寫操作。
-
安全性:保護(hù)數(shù)據(jù)的安全性和隱私,采用合適的安全機(jī)制和加密技術(shù)。
Ambry 設(shè)計(jì)
設(shè)計(jì)特點(diǎn)
高可用性和水平可擴(kuò)展性
Ambry 是一個(gè)高可用并且最終一致的系統(tǒng)。在大多數(shù)情況下,寫入會(huì)寫入本地?cái)?shù)據(jù)中心,然后異步復(fù)制到其他數(shù)據(jù)中心。這確保在網(wǎng)絡(luò)分區(qū)下,寫入本地?cái)?shù)據(jù)中心仍然可用。此外,當(dāng)一臺(tái)機(jī)器在本地不可用時(shí),Ambry會(huì)選擇同一數(shù)據(jù)中心內(nèi)另一臺(tái)機(jī)器上的另一個(gè)副本來讀取或?qū)懭霐?shù)據(jù)。對(duì)于讀取,當(dāng)數(shù)據(jù)不存在于本地?cái)?shù)據(jù)中心時(shí),它會(huì)將請(qǐng)求代理到具有blob的數(shù)據(jù)中心。
低運(yùn)營(yíng)開銷
Ambry 的一個(gè)關(guān)鍵設(shè)計(jì)目標(biāo)是使集群的操作變得非常容易。該系統(tǒng)是完全去中心化的,并配備了管理集群所需的所有工具。此外,大部分操作將在軟件內(nèi)自動(dòng)進(jìn)行,以確保維護(hù)集群所需的手動(dòng)工作量非常少
低MTTR(平均修復(fù)時(shí)間)
這對(duì)于分布式系統(tǒng)來說非常重要。機(jī)器停機(jī)、磁盤故障、服務(wù)器崩潰和 GC 停止進(jìn)程。所有這些故障在分布式系統(tǒng)中都是完全可以接受的故障。然而,關(guān)鍵是要在很短的時(shí)間內(nèi)解決問題。在所有情況下,系統(tǒng)在維修期間都可以使用。 但是,保持較低的MTTR仍然很重要
雙交叉DC
默認(rèn)情況下,Ambry 支持主動(dòng)主動(dòng)設(shè)置。這意味著對(duì)象可以寫入任何數(shù)據(jù)中心的同一分區(qū),也可以從任何其他數(shù)據(jù)中心讀取。這通常不是許多系統(tǒng)提供的通用功能。Ambry 通過復(fù)制以及在需要時(shí)將請(qǐng)求代理到遠(yuǎn)程數(shù)據(jù)中心來實(shí)現(xiàn)這一點(diǎn)。
適用于大型和小型媒體對(duì)象
大多數(shù)媒體流量由數(shù)萬億個(gè)小對(duì)象和數(shù)十億個(gè)大對(duì)象組成。系統(tǒng)需要為這種混合工作負(fù)載正常運(yùn)行。在Ambry中實(shí)現(xiàn)這一點(diǎn)的方式是將所有對(duì)象的寫入合并到一個(gè)順序日志中。這確保所有寫入都是批處理并異步刷新,并且磁盤上的碎片非常少。
成本效益
最后,任何對(duì)象存儲(chǔ)都需要長(zhǎng)期存儲(chǔ)媒體和數(shù)據(jù)類型。 隨著時(shí)間的推移,較舊的數(shù)據(jù)會(huì)變冷并且讀取QPS非常低。此外,對(duì)象通常很大并且占用大量空間。 設(shè)計(jì)應(yīng)該能夠啟用JBOD,支持硬盤并將空間放大保持在最低限度。
技術(shù)架構(gòu)
分區(qū)
Ambry 的核心抽象是blob塊,一種用于存儲(chǔ)數(shù)據(jù)的不可變結(jié)構(gòu)。每個(gè)blob都分配給磁盤上的一個(gè)分區(qū)并通過blob ID進(jìn)行引用。系統(tǒng)的用戶通過執(zhí)行put, get 和delete操作
數(shù)據(jù)分區(qū)設(shè)計(jì)可以自由擴(kuò)展——當(dāng)用戶向系統(tǒng)添加更多數(shù)據(jù)時(shí),它可以添加更多分區(qū)。默認(rèn)情況下,新分區(qū)是可讀寫的 (意味著它同時(shí)接受 put, get,和 delete流量)。當(dāng)分區(qū)接近容量時(shí),它會(huì)轉(zhuǎn)換為只讀,這意味著它不再支持通過以下方式存儲(chǔ)新的blob put操作。系統(tǒng)的流量往往以更新的內(nèi)容為目標(biāo),從而給讀寫分區(qū)帶來更高的負(fù)載
為了提供對(duì)blob 的可擴(kuò)展讀寫訪問,Ambry使用了三個(gè)高級(jí)組件:集群管理器(Cluster Managers)、前端層(Frontend Layer)和 數(shù)據(jù)節(jié)點(diǎn)(Datanodes)。
集群管理器
集群管理器決定如何跨地理分布式數(shù)據(jù)中心將數(shù)據(jù)存儲(chǔ)在系統(tǒng)中,以及存儲(chǔ)集群的狀態(tài),狀態(tài)主要存儲(chǔ)在Zookeeper中。例如,它們存儲(chǔ)Ambry部署的邏輯布局,包括分區(qū)可讀寫還是只讀,以及分區(qū)在數(shù)據(jù)中心磁盤上的位置
Clustermap 由兩部分組成:
-
硬件布局:包含了機(jī)器的列表、每臺(tái)機(jī)器上的磁盤以及每個(gè)磁盤的容量。布局還維護(hù)資源的狀態(tài)(機(jī)器和磁盤)并指定主機(jī)名和端口,通過主機(jī)名和端口就能連接到數(shù)據(jù)節(jié)點(diǎn);
-
分區(qū)布局:包含了分區(qū)的列表、它們的位置信息以及狀態(tài)。在 Ambry 中,分區(qū)有一個(gè)數(shù)字表示的 ID,副本的列表可以跨數(shù)據(jù)中心。分區(qū)是固定大小的資源,集群間的數(shù)據(jù)重平衡都是在分區(qū)級(jí)別進(jìn)行的。
硬件管理
Node |
Disks |
Size |
State |
DC1:NODE1 |
Disk_0 Disk_1 Disk_2 ... |
1TB 1TB 1TB ... |
Up Down Up ... |
DC1:NODE2 |
Disk_0 Disk_1 Disk_2 ... |
1TB 1TB 1TB ... |
Up Down Up ... |
... |
... |
... |
... |
... |
... |
... |
... |
分區(qū)管理
PartitionId |
State |
Replica |
Partition_0 |
Read write |
DC1:NODE1:DISK_0 DC1:NODE3:DISK_1 |
Partition_1 |
Read write |
... |
Partition_2 |
Read |
... |
... |
... |
... |
數(shù)據(jù)節(jié)點(diǎn)和前端服務(wù)器都能夠訪問 clustermap,并且會(huì)始終使用它們當(dāng)前的視圖來做出決策,這些決策涉及到選擇可用的機(jī)器、過濾副本以及識(shí)別對(duì)象的位置等。
處理流程
在put操作中,分區(qū)是隨機(jī)選擇的(出于數(shù)據(jù)平衡的目的),在get/delete 操作中,分區(qū)是從blob id 中提取的
為了put操作,Ambry可以配置為同步復(fù)制(確保 blob 在返回之前出現(xiàn)在多個(gè)數(shù)據(jù)節(jié)點(diǎn)上),或異步復(fù)制-同步復(fù)制可防止數(shù)據(jù)丟失,但會(huì)在寫入路徑上引入更高的延遲。
如果在異步配置中設(shè)置,分區(qū)交換日志的副本存儲(chǔ)blob及其在存儲(chǔ)中的偏移量。 核對(duì)這些日志之后,彼此之間再同步傳遞blob。
性能評(píng)測(cè)
根據(jù)評(píng)測(cè)報(bào)告本文評(píng)估了兩個(gè)主要領(lǐng)域:吞吐量和延遲 ,以及地理分布式操作。
為了測(cè)試系統(tǒng)的吞吐量和延遲(對(duì)于大規(guī)模面向用戶的低成本服務(wù)至關(guān)重要),不同大小對(duì)象的讀寫流量發(fā)送到Ambry。該系統(tǒng)能夠?yàn)檩^大對(duì)象的讀/寫提供接近等效的性能,但在許多小的讀/寫操作中達(dá)到較低的性能限制文章來源:http://www.zghlxwxcb.cn/news/detail-765879.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-765879.html
到了這里,關(guān)于LinkedIn 開源分布式存儲(chǔ)系統(tǒng)Ambry的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!