一致性hash算法php開源本文對分布式存儲技術(shù)架構(gòu)體系進行綜述分析,選型需考慮php 一致性hash算法
2022-08-19
本文對分布式存儲技術(shù)架構(gòu)體系進行了總結(jié)和分析,區(qū)分了不同技術(shù)體系的應(yīng)用場景,分析了不同體系分布式存儲技術(shù)的典型產(chǎn)品特點,明確了分布式存儲技術(shù)的數(shù)據(jù)模型、數(shù)據(jù)訪問、數(shù)據(jù)性能、數(shù)據(jù)量等。不同的科技產(chǎn)品。不同層次的優(yōu)缺點。希望通過對這些典型特征的理解和對具體業(yè)務(wù)場景的數(shù)據(jù)需求挖掘,將相對優(yōu)秀的數(shù)據(jù)存儲技術(shù)匹配到最適合的業(yè)務(wù)場景。
1. 為什么要引入分布式存儲技術(shù)?
從 1970 年代到 2000 年左右,數(shù)據(jù)存儲基本上伴隨著 IBM 提出的關(guān)系模型理論,以關(guān)系數(shù)據(jù)庫(,DB2、)為數(shù)據(jù)管理平臺,以集中式存儲產(chǎn)品為最終數(shù)據(jù)載體而形成一個堅實的數(shù)據(jù)存儲架構(gòu)系統(tǒng)。2000年以后一致性hash算法php開源,隨著數(shù)據(jù)量的增加,單機的數(shù)據(jù)庫瓶頸已經(jīng)不能滿足大數(shù)據(jù)量的需求。從數(shù)據(jù)管理層面,誕生了分庫分表的解決方案。自2006年發(fā)表三篇論文(GFS、Big、Map-)以來,在數(shù)據(jù)管理層面和數(shù)據(jù)載體層面出現(xiàn)了各種分布式產(chǎn)品,如GFS、GPFS、HFS、DFS等分布式文件系統(tǒng)。, , , , 等系列分布式數(shù)據(jù)管理平臺。
總而言之,數(shù)據(jù)量的爆發(fā)式增長催生了數(shù)據(jù)應(yīng)用領(lǐng)域的各種新需求,而數(shù)據(jù)應(yīng)用領(lǐng)域的各種新需求又帶動了數(shù)據(jù)管理層面和數(shù)據(jù)載體層面的分布式變化。
2. 主流分布式文件系統(tǒng)技術(shù)分析
主流的分布式文件系統(tǒng)技術(shù)主要有GPFS、GFS、HDFS、DFS等,下面以相同或相似技術(shù)系統(tǒng)的典型產(chǎn)品進行說明。
2.1 GFS
GFS是基于文件系統(tǒng)的分布式存儲系統(tǒng),屬于以中心為中心的分布式架構(gòu);通過查詢中心節(jié)點的元數(shù)據(jù)得到數(shù)據(jù)地址空間,然后在數(shù)據(jù)節(jié)點上查詢數(shù)據(jù)本身,完成數(shù)據(jù)存儲機制。讀和寫; 它是一種基于文件數(shù)據(jù)存儲場景設(shè)計的架構(gòu)。
接下來我們來看看GFS的具體特點,在選擇模型的時候應(yīng)該考慮什么?
(1) GFS 是一種分布式存儲系統(tǒng),適用于大文件,尤其是 GB 級的大文件存儲場景。
(2) GFS 非常適合對數(shù)據(jù)訪問不敏感的搜索引擎服務(wù)。
(3) GFS是分布式架構(gòu),有中心節(jié)點,節(jié)點是單個集中管理節(jié)點,是高可用的瓶頸,也是可能導(dǎo)致性能問題的瓶頸。
(4) GFS 可以通過緩存一部分到節(jié)點來減少與節(jié)點的交互。
(5)GFS節(jié)點上的日志和文件需要進行復(fù)制,保持多份,保證元數(shù)據(jù)的高可用和中央管理功能。
2.2 HDFS
HDFS的架構(gòu)原理與GFS基本相似,但它是在GFS的基礎(chǔ)上進行一些改進后形成的一套技術(shù)體系。同樣,它的基于文件系統(tǒng)的分布式存儲系統(tǒng)是一個有中心的分布式架構(gòu);通過中心節(jié)點元數(shù)據(jù)的索引查詢得到數(shù)據(jù)地址空間,然后利用數(shù)據(jù)節(jié)點上查詢數(shù)據(jù)本身的機制完成數(shù)據(jù)。讀和寫; 它是一種基于文件數(shù)據(jù)存儲場景設(shè)計的架構(gòu)。
接下來我們來看看HDFS的具體特點,在選型時應(yīng)該考慮什么?
(1) HDFS默認最小存儲單元為128M,大于GFS的64M。
(2) HDFS 不支持并發(fā)文件寫入,它只允許對單個文件進行一次寫入或追加請求。
(3)HDFS從2.0版本開始支持兩個管理節(jié)點),可以做到分鐘級的主備切換。
(4)HDFS更適合單寫多讀的大文件流式讀取。
(5) HDFS 不支持對寫入文件的更新操作,只支持對其進行追加操作。
2.3
雖然是基于文件系統(tǒng)的分布式存儲技術(shù),但與 GFS 架構(gòu)有著本質(zhì)的區(qū)別。它是一種去中心化、非中心化的分布式架構(gòu);它通過文件整個目錄的DHT算法計算出對應(yīng)的地址,從而實現(xiàn)數(shù)據(jù)的讀寫,這與GFS和HDFS通過元數(shù)據(jù)檢索實現(xiàn)數(shù)據(jù)尋址的方式有很大不同。
接下來我們來看看具體有哪些特點,在選型時又應(yīng)該如何考慮呢?**
(1) 采用非中心對稱架構(gòu),沒有專門的元數(shù)據(jù)服務(wù)器,所以不存在元數(shù)據(jù)服務(wù)器瓶頸。元數(shù)據(jù)存在于文件的屬性和擴展屬性中。
(2) 可以提供多種存儲卷類型,如 , , +0.
(3) 使用數(shù)據(jù)最終一致性算法,只要一份完成。
(4) 默認情況下,文件會被分片,然后分布在所有對應(yīng)的卷中。因此,從最初的設(shè)計來看,它更適合大文件并發(fā)的場景。
(5)使用的DHT算法穩(wěn)定性不好,一旦增加或減少存儲節(jié)點,勢必會影響到下的所有數(shù)據(jù)進行再平衡,開銷比較大。
(6)文件目錄使用擴展屬性記錄子卷的hash分布范圍,每個范圍不重疊。遍歷目錄時,需要獲取每個文件的屬性和擴展屬性進行聚合。對于時間長了,遍歷效率很差。
3. 主流分布式對象存儲技術(shù)解析
目前廣泛使用的分布式對象存儲技術(shù)基本上都是基于或衍生自 Ceph 系統(tǒng)。
3.1 個 Ceph
Ceph首先是一種對象存儲技術(shù),也就是說它存儲數(shù)據(jù)的機制與我們之前接觸過的文件系統(tǒng)機制完全不同。它將數(shù)據(jù)抽象為對象和對象標識符以進行管理。在架構(gòu)上,Ceph 與去中心化架構(gòu)比較類似;它通過對象的hash算法得到對應(yīng)的&Node地址,從而實現(xiàn)數(shù)據(jù)的讀寫。
接下來,我們來看看Ceph的具體特點,在選型時應(yīng)該考慮什么?
(1) Ceph 是一個統(tǒng)一的存儲平臺,統(tǒng)一了三個接口。上層應(yīng)用支持 , , 和 File。
(2) Ceph使用算法完成數(shù)據(jù)分布計算,通過Tree的邏輯對象數(shù)據(jù)結(jié)構(gòu)自然實現(xiàn)故障隔離副本位置計算。通過內(nèi)部節(jié)點的組織結(jié)構(gòu),集群變化引起的數(shù)據(jù)遷移量結(jié)構(gòu)最小。
(3) Ceph 維護了強數(shù)據(jù)一致性算法,數(shù)據(jù)的所有副本都被寫入并返回完成寫入事務(wù)。寫入效率會更低,所以更適合少寫多讀的場景.
(4) Ceph 對象存儲的最小單位為 4M,相比 GFS&HDFS,適合一些小型的非結(jié)構(gòu)化數(shù)據(jù)存儲。
3.2
它也是一種對象存儲技術(shù)。類似于 Ceph 的架構(gòu),也是去中心化的架構(gòu);它通過對象的hash算法得到對應(yīng)的&Node地址,從而實現(xiàn)數(shù)據(jù)的讀寫。但是,需要通過節(jié)點來完成與數(shù)據(jù)節(jié)點的交互。節(jié)點雖然可以負載均衡,但畢竟經(jīng)過了中間層。在大并發(fā)和小文件操作的場景下,Ceph 的性能會更好。
接下來我們來看看具體有哪些特點,在選型時又應(yīng)該如何考慮呢?
(1) 只保證數(shù)據(jù)的最終一致性,寫入2份后一致性hash算法php開源,導(dǎo)致讀取操作需要對比校驗副本,讀取效率比較低。
(2) 采用一致性哈希算法完成數(shù)據(jù)分布計算,通過先計算對象到邏輯對象(Zone)的映射,再進行分布實現(xiàn)數(shù)據(jù)副本的故障隔離分布對象間的對象通過哈希一致性算法完成計算,采用Ring結(jié)構(gòu)組織節(jié)點組織,數(shù)據(jù)分布不像Ceph那樣均勻。
(3)需要使用節(jié)點訪問數(shù)據(jù),與直接通過客戶端訪問數(shù)據(jù)節(jié)點不同,相對數(shù)據(jù)訪問效率比Ceph差(可以參考&的性能測試報告)。
4. 主流分布式數(shù)據(jù)庫技術(shù)解析
目前,在分布式數(shù)據(jù)庫技術(shù)的應(yīng)用場景中,各行各業(yè)使用的產(chǎn)品非常多,尤其是&領(lǐng)域。請注意,我們將用幾個典型的類別來說明,例如文檔、鍵值、內(nèi)存和列。
4.1
它是以二進制 JSON 或 BSON 格式存儲文檔數(shù)據(jù)的數(shù)據(jù)模型seo優(yōu)化,專為文檔存儲而設(shè)計。查詢并返回結(jié)果時,將數(shù)據(jù)轉(zhuǎn)換為易于閱讀的數(shù)據(jù)格式。它所謂的分布式主要是指它的分片集群機制。水平擴展是通過基于范圍的分區(qū)機制實現(xiàn)的,稱為分片,它可以自動管理每個分布式節(jié)點存儲的數(shù)據(jù)。
接下來,我們來看看具體有哪些特點,以及在選型時如何考慮。
(1) 是面向集合的存儲,有自由模式,便于存儲對象類型的數(shù)據(jù),文件存儲格式為JSON。從這個角度,我們需要從數(shù)據(jù)模型的角度來分析它與數(shù)據(jù)模型的兼容性數(shù)據(jù)業(yè)務(wù)場景。
(2)使用高效的二進制數(shù)據(jù)存儲,包括大對象,所以更適合媒體、視頻等大對象的訪問場景。
(3) 支持動態(tài)查詢,支持全索引,支持RUBY、JAVA、C、PHP、C#等語言,匹配前端應(yīng)用靈活性強,適用場景多。
(4)具有很強的橫向擴展能力,可以通過分布式集群架構(gòu)將數(shù)據(jù)分布到多臺機器上,并有完善的機制支持復(fù)制和故障恢復(fù),支持海量數(shù)據(jù)處理場景。
4.2
它是一個用ANSI C語言編寫的開源軟件網(wǎng)站制作,符合BSD協(xié)議,支持網(wǎng)絡(luò),可以基于內(nèi)存、分布式、可選的持久鍵值對(Key-)存儲數(shù)據(jù)庫,并提供多種語言的API。常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因為()可以是字符串()、散列(Hash)、列表(list)、集合(sets)、有序集合(sets)等類型。
接下來我們來看看具體有哪些特點,在選型時又應(yīng)該如何考慮呢?
(1)所有數(shù)據(jù)都存儲在內(nèi)存中,源碼用C語言編寫,更貼近底層操作系統(tǒng),采用單線程架構(gòu),避免多線程可能帶來的競爭開銷。以上確定它是一個非??斓臄?shù)據(jù)庫。
(2)不僅支持簡單的key類型的數(shù)據(jù),還提供list、set、zset、hash等數(shù)據(jù)結(jié)構(gòu)的存儲。結(jié)合這種比較靈活的數(shù)據(jù)模型,通常用作緩存。
(3)提供了AOF和RDB兩種持久化方案,所以不僅適用于緩存場景,也適用于基于此需求的衍生業(yè)務(wù)場景。
(4)從3.0版本開始支持集群模式,很好地實現(xiàn)了處理能力的橫向擴展。結(jié)合其快速的速度,這為互聯(lián)網(wǎng)e-商業(yè). 解決方案。
4.3
是的開源實現(xiàn),類似于使用GFS作為其文件存儲系統(tǒng),使用HDFS作為其文件存儲系統(tǒng);運行中處理海量數(shù)據(jù)。因此,從源頭上來說,它是一種針對大數(shù)據(jù)處理的數(shù)據(jù)訪問解決方案,可以稱為列式數(shù)據(jù)庫。
接下來,我們來看看具體有哪些特點,以及在選型時如何考慮。
(1) 不像很多關(guān)系型數(shù)據(jù)庫是面向行存儲的,它是面向列的存儲和權(quán)限控制。里面的每一列都是分開存儲的,支持基于列的獨立檢索。所以自然適合應(yīng)用程序 (OLAP)。
(2)中的數(shù)據(jù)都是以字符串的形式存儲的,空列不占用存儲空間。所以列存儲解決了數(shù)據(jù)稀疏的問題,通常可以設(shè)計成稀疏矩陣。一定程度上節(jié)省了存儲開銷。
(3)的單表容量很大,可以有百億行數(shù)百萬列,橫向和縱向兩個維度都可以插入數(shù)據(jù),非常靈活。使用LSM樹作為內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu),這種結(jié)構(gòu)會周期性的將小文件合并成大文件,以減少磁盤訪問,這些特性特別適合單表數(shù)據(jù)量巨大的數(shù)據(jù)訪問場景。
5. 總結(jié)與展望
通過對分布式存儲技術(shù)架構(gòu)體系的概述和分析,我們首先區(qū)分應(yīng)該在數(shù)據(jù)管理場景還是數(shù)據(jù)載體場景中使用不同的技術(shù)體系。然后,通過對不同系統(tǒng)分布式存儲技術(shù)典型產(chǎn)品特性的分析,明確了不同技術(shù)產(chǎn)品在數(shù)據(jù)模型、數(shù)據(jù)訪問、數(shù)據(jù)性能、數(shù)據(jù)層次等不同層次上的優(yōu)缺點,并最后希望了解這些典型特征。而針對特定業(yè)務(wù)場景的數(shù)據(jù)需求挖掘,可以將相對優(yōu)秀的數(shù)據(jù)存儲技術(shù)匹配到最適合的業(yè)務(wù)場景。返回搜狐,查看更多