一致性hash算法php開源分布式分布式會(huì)遇到什么問題,如何設(shè)計(jì)一個(gè)高質(zhì)量的分布式系統(tǒng)一致性hash算法php開源
2022-08-19
我們每天都在講分布式和分布式,那么我們知道什么是分布式,分布式會(huì)遇到什么問題,有哪些理論支持,有哪些經(jīng)典方案,行業(yè)如何設(shè)計(jì)和保證分布式的高可用?系統(tǒng)?
1.建筑設(shè)計(jì)
本節(jié)將從一些經(jīng)典的開源系統(tǒng)架構(gòu)設(shè)計(jì)開始,看看如何設(shè)計(jì)一個(gè)高質(zhì)量的分布式系統(tǒng);
一般的設(shè)計(jì)出發(fā)點(diǎn)無(wú)非就是
1.1 主備架構(gòu)
為現(xiàn)有服務(wù)構(gòu)建備份服務(wù)。兩者的功能完全相同。不同的是,通常只有主應(yīng)用提供外部服務(wù)能力;而備用應(yīng)用只需要保證主應(yīng)用的能力與主應(yīng)用的能力一致即可。服務(wù); 當(dāng)主應(yīng)用出現(xiàn)故障時(shí),備用應(yīng)用切換為主應(yīng)用,原主應(yīng)用下線;快速主備切換,有效縮短故障時(shí)間
綜上所述,主備架構(gòu)的特點(diǎn)就比較清楚了。
其次,在這個(gè)架構(gòu)模型中最需要考慮的是如何實(shí)現(xiàn)主備切換?
1.2 主從架構(gòu)
主從一般稱為讀寫分離。 提供讀寫能力, 只提供讀寫能力。
從目前的互聯(lián)網(wǎng)應(yīng)用來(lái)看,大多是讀多寫少的場(chǎng)景;讀更容易成為性能瓶頸,所以使用讀寫分離可以有效提升整個(gè)集群的響應(yīng)能力
主從架構(gòu)可以分為:一主、多從+一主、一從、多從。以主從架構(gòu)模型為例進(jìn)行說(shuō)明
主從模式的主要特點(diǎn)是
關(guān)鍵問題是
1.3 多主多從架構(gòu)
一主多從面對(duì)單主節(jié)點(diǎn)的瓶頸,再考慮多主多從的策略。也負(fù)責(zé)提供read和,提供read;
但是這里有一個(gè)核心點(diǎn)就是多個(gè)之間的數(shù)據(jù)同步,如何保證數(shù)據(jù)的一致性是這個(gè)架構(gòu)模型的重點(diǎn)
比如雙主雙從可以說(shuō)是一個(gè)典型的應(yīng)用場(chǎng)景。除了以上的一致性,實(shí)際使用中還需要考慮主鍵id沖突的問題。
1.4 普通集群模式
沒有主節(jié)點(diǎn),集群中所有應(yīng)用功能都是平等的,沒有主次之分(目前大部分業(yè)務(wù)服務(wù)都屬于這一類),一個(gè)請(qǐng)求可以被集群中的任何一個(gè)服務(wù)響應(yīng);
這也可以稱為去中心化設(shè)計(jì)模式,如集群模式、注冊(cè)中心,以可用性為首要目標(biāo)
對(duì)于普通集群模式,要考慮的關(guān)鍵點(diǎn)是
數(shù)據(jù)一致性:如何保證所有實(shí)例數(shù)據(jù)一致,或者最終一致
1.5 數(shù)據(jù)分片架構(gòu)
此分片模型的描述可能不準(zhǔn)確。當(dāng)你閱讀它時(shí),專注于理解這個(gè)想法。
在之前的架構(gòu)中,都是采用數(shù)據(jù)冗余的方式,即所有實(shí)例都有全量數(shù)據(jù),而這里的數(shù)據(jù)分片是從數(shù)據(jù)拆分的思想來(lái)處理的,全量數(shù)據(jù)通過。將一定的規(guī)則劃分為多個(gè)系統(tǒng),每個(gè)系統(tǒng)包含部分?jǐn)?shù)據(jù),減少單個(gè)節(jié)點(diǎn)的壓力,主要用于解決數(shù)據(jù)量大的場(chǎng)景
例如,在集群模式下,分區(qū)是由散列槽執(zhí)行的。
es等索引分片存儲(chǔ)
1.6 灰色總結(jié)
本節(jié)主要從架構(gòu)設(shè)計(jì)層面對(duì)當(dāng)前分布式系統(tǒng)解決方案進(jìn)行簡(jiǎn)單的分類和總結(jié),不一定全面。歡迎留言指正
基于冗余的思想:
分裂思維:
對(duì)于分割這塊,我們常說(shuō)的分庫(kù)分表也體現(xiàn)了這個(gè)思想
2.理論基礎(chǔ)
本節(jié)將介紹分布式系統(tǒng)中的經(jīng)典理論,如廣義過程的CAP/BASE理論、一致性理論基礎(chǔ)、raft、信息交換協(xié)議、兩階段、三階段等。
本節(jié)主要內(nèi)容指
2.1 CAP 定理
CAP 定理指出,分布式系統(tǒng)不可能同時(shí)提供以下三個(gè)要求:
: 可用性
: 分區(qū)容錯(cuò)
一般來(lái)說(shuō),很難不保證P。當(dāng)服務(wù)部署在多個(gè)實(shí)例上時(shí),節(jié)點(diǎn)異常和網(wǎng)絡(luò)故障是正常的,根據(jù)不同的業(yè)務(wù)場(chǎng)景進(jìn)行選擇。
對(duì)于服務(wù)有限的應(yīng)用,AP是保證高可用的首選。即使部分機(jī)器出現(xiàn)異常,也不會(huì)導(dǎo)致整個(gè)服務(wù)不可用;例如,大多數(shù)前臺(tái)應(yīng)用程序是這樣的
對(duì)于數(shù)據(jù)一致性要求高的場(chǎng)景,比如涉及錢的支付結(jié)算,CP可能更重要
CAP的三種組合描述如下
2.2 基礎(chǔ)理論
作為上限的延伸,基礎(chǔ)理論的核心特征是摒棄強(qiáng)一致性,追求最終一致性
軟:軟狀態(tài)
: 最終一致性
綜合以上描述可以看出,BASE理論適用于大規(guī)模高可用、可擴(kuò)展的分布式系統(tǒng)
注意,它不同于 ACID 的強(qiáng)一致性模型,而是通過犧牲強(qiáng)一致性來(lái)獲得可用性,并允許數(shù)據(jù)在一段時(shí)間內(nèi)不一致,但最終達(dá)到一致狀態(tài)
2.3 定理
沒聽說(shuō)過,以下來(lái)自:
定理的第一部分(PAC)與CAP定理相同,ELC是一個(gè)擴(kuò)展。整個(gè)論點(diǎn)假設(shè)我們通過復(fù)制保持高可用性。因此,當(dāng)它失敗時(shí),CAP 定理占上風(fēng)。但如果不是,我們?nèi)匀恍枰紤]復(fù)制系統(tǒng)中一致性和延遲之間的權(quán)衡。
2.4 共識(shí)算法
該算法解決的問題是分布式共識(shí)問題,即分布式系統(tǒng)中的各個(gè)進(jìn)程如何通過共識(shí)就某個(gè)值(分辨率)達(dá)成一致
根據(jù)上面的描述,可以看出非常適合選舉;它的工作流程
角色劃分:
:不參與決策一致性hash算法php開源,獲取最新提案
2.5 Raft 算法
推薦感興趣的朋友,查看
為了解決復(fù)雜度,raft算法提供了一個(gè)更易理解的算法基礎(chǔ),其核心流程為:
接受請(qǐng)求并轉(zhuǎn)發(fā)到,當(dāng)收到大部分響應(yīng)時(shí),通知所有提交請(qǐng)求,自己提交請(qǐng)求并告訴調(diào)用者 ok
角色劃分:
2.6 ZAB 協(xié)議
ZAB() 協(xié)議是專為分布式協(xié)調(diào)服務(wù)設(shè)計(jì)的支持崩潰恢復(fù)的一致性協(xié)議?;谠搮f(xié)議,實(shí)現(xiàn)了主從模式的系統(tǒng)架構(gòu),以保持集群中副本之間的數(shù)據(jù)一致性。
主要用于zk的數(shù)據(jù)一致性場(chǎng)景。核心思想是收到交易請(qǐng)求后,通過給定,當(dāng)一半以上返回ACK時(shí),提交提案并發(fā)送信息給
角色劃分
: 追隨者
: 是從 3.3.0 開始引入的一個(gè)角色,
2.7 2PC 協(xié)議
二、兩階段提交協(xié)議,主要解決強(qiáng)一致性,集中式強(qiáng)一致性協(xié)議
角色劃分
實(shí)施過程
協(xié)調(diào)者節(jié)點(diǎn)接收到請(qǐng)求,然后將其提交給參與者節(jié)點(diǎn)。當(dāng)所有參與者都回復(fù)ok后,協(xié)調(diào)節(jié)點(diǎn)提交給所有參與者節(jié)點(diǎn),全部返回ok后,數(shù)據(jù)確認(rèn)提交。
當(dāng)參與者在第一階段失敗時(shí),所有參與者節(jié)點(diǎn)都回滾
特征
優(yōu)點(diǎn)是易于實(shí)現(xiàn)
缺點(diǎn)也很明顯
2.8 3PC 協(xié)議
分布式事務(wù):兩階段提交與三階段提交
在兩階段展開的基礎(chǔ)上,第一階段分為兩部分,+,第三階段為
第一階段
在這個(gè)階段,協(xié)調(diào)者會(huì)詢問每個(gè)參與者是否可以正常執(zhí)行交易,參與者會(huì)根據(jù)自己的情況回復(fù)一個(gè)估計(jì)值。與真正的執(zhí)行交易相比,這個(gè)過程是輕量級(jí)的
第二階段
在這個(gè)階段,協(xié)調(diào)者會(huì)根據(jù)第一階段的查詢結(jié)果采取相應(yīng)的行動(dòng)。如果所有參與者都返回ok,則協(xié)調(diào)者將向參與者提交事務(wù)執(zhí)行(單個(gè)未提交)通知;否則,將通知參與者回滾
第三階段
如果第二階段的事務(wù)沒有中斷,這個(gè)階段的協(xié)調(diào)者會(huì)根據(jù)事務(wù)執(zhí)行返回的結(jié)果來(lái)決定提交或回滾事務(wù)。如果所有參與者都正常執(zhí)行,他們將提交;否則,協(xié)調(diào)者 + 參與者將回滾
在這個(gè)階段一致性hash算法php開源,如果參與者因?yàn)閰f(xié)調(diào)者或網(wǎng)絡(luò)問題而未能收到協(xié)調(diào)者的 OR 請(qǐng)求,參與者不會(huì)像兩階段提交那樣被阻塞,而是會(huì)等待超時(shí)繼續(xù)進(jìn)行,相比于兩階段提交- 減少同步阻塞,但仍不能完全避免數(shù)據(jù)不一致
特征
數(shù)據(jù)不一致依然存在
2.9 協(xié)議
該協(xié)議,顧名思義,就像八卦一樣,采用一種隨機(jī)且具有傳染性的方式在整個(gè)網(wǎng)絡(luò)中傳播信息,并使系統(tǒng)中的所有節(jié)點(diǎn)在一定時(shí)間內(nèi)保持一致。通過以上特性,協(xié)議可以保證系統(tǒng)在極端情況下也能運(yùn)行(例如集群中只有一個(gè)節(jié)點(diǎn)在運(yùn)行)
主要用于分布式數(shù)據(jù)庫(kù)系統(tǒng)中各個(gè)副本節(jié)點(diǎn)同步數(shù)據(jù)。這種場(chǎng)景的最大特點(diǎn)之一是形成的網(wǎng)絡(luò)的節(jié)點(diǎn)都是對(duì)等節(jié)點(diǎn),是一個(gè)非結(jié)構(gòu)化的網(wǎng)絡(luò)。
工作過程
特征
缺點(diǎn)
2.10 灰色摘要
本節(jié)主要介紹分布式系統(tǒng)設(shè)計(jì)中一些常見的理論基石,例如如何保證分布式系統(tǒng)的一致性以及如何就一個(gè)提案達(dá)成共識(shí)
3.算法
本節(jié)將主要介紹分布式系統(tǒng)中的經(jīng)典算法,如分區(qū)常用的一致性哈希算法、適合一致性的NWR算法、PBFT拜占庭容錯(cuò)算法、區(qū)塊鏈中廣泛使用的PoW等。算法等
3.1 一致性哈希算法
一致性哈希算法,主要用于數(shù)據(jù)分片場(chǎng)景,有效降低增刪服務(wù)對(duì)數(shù)據(jù)復(fù)制的影響
通過對(duì)數(shù)據(jù)項(xiàng)的鍵進(jìn)行散列來(lái)映射其在環(huán)上的位置,然后順時(shí)針遍歷環(huán),找到位置大于項(xiàng)的位置的第一個(gè)節(jié)點(diǎn),將鍵標(biāo)識(shí)的每個(gè)數(shù)據(jù)分配給散列環(huán)一個(gè)節(jié)點(diǎn)
一致性哈希的主要優(yōu)點(diǎn)是增量穩(wěn)定性;節(jié)點(diǎn)的增刪,對(duì)于整個(gè)集群,只影響其近鄰,其他節(jié)點(diǎn)不受影響。
注意:
3.2 NWR 算法
用于確保數(shù)據(jù)冗余和最終一致性的投票算法的主要數(shù)學(xué)思想來(lái)自鴿巢原理
NWR算法要求每個(gè)數(shù)據(jù)拷貝對(duì)象可以投1票,每次操作的執(zhí)行需要獲得最少的讀票和寫票;一般來(lái)說(shuō)網(wǎng)站開發(fā),寫入票數(shù)W一般需要超過N/2,也就是我們通常說(shuō)的get超過一半的票數(shù)說(shuō)明數(shù)據(jù)寫入成功
實(shí)際上,當(dāng) W=N 且 R=1 時(shí),稱為 WARO(All Read One)。這就是CAP理論中CP模型的場(chǎng)景。
3.3 PBFT拜占庭算法
拜占庭算法主要針對(duì)分布式場(chǎng)景下無(wú)響應(yīng),或者響應(yīng)不可信時(shí)的容錯(cuò)問題。其核心分為三個(gè)階段,如下
假設(shè)集群節(jié)點(diǎn)數(shù)為N,f個(gè)故障節(jié)點(diǎn)(無(wú)響應(yīng))和f個(gè)問題節(jié)點(diǎn)(無(wú)響應(yīng)或錯(cuò)誤響應(yīng)),f+1個(gè)正常節(jié)點(diǎn),即3f+1=n
與完全不適合有人作惡的場(chǎng)景的 Raft 算法相比,PBFT 算法可以容忍(n 1)/3 個(gè)惡意節(jié)點(diǎn)(也可以是故障節(jié)點(diǎn))。另外,與PoW算法,PBFT的優(yōu)點(diǎn)是不消耗算力,PBFT算法是O(n^2)的消息復(fù)雜度算法,所以隨著消息數(shù)量的增加,網(wǎng)絡(luò)延遲會(huì)有更大對(duì)系統(tǒng)運(yùn)行的影響,限制了PBFT算法的運(yùn)行,分布式系統(tǒng)的規(guī)模也決定了PBFT算法適用于中小型分布式系統(tǒng)
3.4 PoW算法
工作量證明(Of Work,簡(jiǎn)稱PoW)也用于分布式一致性場(chǎng)景。它不同于之前的raft和pbft。它采用投票機(jī)制來(lái)達(dá)成共識(shí)方案。PoW 使用工作證明。
客戶端需要做一些困難的工作才能得到一個(gè)結(jié)果,但驗(yàn)證者可以通過結(jié)果輕松檢查客戶端是否做了相應(yīng)的工作。通過消耗一定的工作量,增加了消息偽造的成本。廣泛應(yīng)用于鏈條,廣為人知。下面簡(jiǎn)單說(shuō)一下PoW算法與區(qū)塊鏈的應(yīng)用場(chǎng)景。
以轉(zhuǎn)BTC為例,A轉(zhuǎn)n個(gè)BTC給B,如何保證n個(gè)幣不會(huì)同時(shí)轉(zhuǎn)給C?
PoW算法主要用于上述區(qū)塊提交的驗(yàn)證,通過哈希值計(jì)算消耗算力來(lái)證明礦工確實(shí)付出了,在多數(shù)同意的情況下才能達(dá)成共識(shí)。
3.5 灰色總結(jié)
本節(jié)主要介紹當(dāng)前分布式下的常用算法,
4.技術(shù)思路
與前面的內(nèi)容相比,本節(jié)的內(nèi)容不容易分類清楚;主要包括一些優(yōu)質(zhì)分布式系統(tǒng)實(shí)踐中推薦的設(shè)計(jì)思路和技術(shù)細(xì)節(jié)
4.1 個(gè) CQRS
也就是我們通俗理解的讀寫分離,核心思想是將兩種不同的操作分開,在獨(dú)立的服務(wù)中實(shí)現(xiàn)
目的是將領(lǐng)域模型與查詢功能分離,讓一些復(fù)雜的查詢擺脫領(lǐng)域模型的限制,以更簡(jiǎn)單的DTO形式顯示查詢結(jié)果。同時(shí),不同的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分離,讓開發(fā)者可以根據(jù)查詢的功能和需求更自由地選擇數(shù)據(jù)存儲(chǔ)引擎
4.2 復(fù)制負(fù)載均衡服務(wù)
復(fù)制負(fù)載均衡服務(wù)(Load,RLBS)可以簡(jiǎn)單理解為我們常說(shuō)的負(fù)載均衡。多個(gè)相同的服務(wù)實(shí)例構(gòu)建一個(gè)集群,每個(gè)服務(wù)可以響應(yīng)請(qǐng)求,負(fù)載均衡器負(fù)責(zé)將請(qǐng)求分發(fā)到不同的實(shí)例。上,常見的加載算法
4.3 心跳機(jī)制
分布式環(huán)境下,如何判斷一個(gè)服務(wù)是否存活,目前最常見的解決方案就是心跳
比如在raft算法中,向all發(fā)送心跳意味著你還活著,避免了新的選舉;
比如哨兵機(jī)制也是利用ping/pong的心跳來(lái)判斷節(jié)點(diǎn)是否下線,是否需要選擇新的主節(jié)點(diǎn);
再比如我們?nèi)粘I(yè)務(wù)應(yīng)用的健康監(jiān)測(cè),判斷服務(wù)是否正常
4.4 租賃機(jī)制
租約就像一把鎖,但即使客戶離開它也能工作??蛻舳苏?qǐng)求一個(gè)有限期限的租約,之后租約到期。如果客戶端想要延長(zhǎng)租約,它可以在租約到期之前更新租約。
租約主要是為了避免一個(gè)資源被某個(gè)對(duì)象長(zhǎng)期持有,一旦對(duì)方掛掉,就不會(huì)主動(dòng)釋放的問題;在實(shí)際場(chǎng)景中,有兩種典型應(yīng)用
分布式鎖
業(yè)務(wù)獲取的分布式鎖一般都有有效期。如果在有效期內(nèi)沒有主動(dòng)釋放,鎖依然會(huì)被釋放,其他業(yè)務(wù)也可以搶占鎖;因此,對(duì)于持有鎖的業(yè)務(wù)方,如果發(fā)現(xiàn)在到期之前,如果業(yè)務(wù)邏輯還沒有處理完,可以續(xù)約,讓自己繼續(xù)持有鎖
一個(gè)典型的實(shí)現(xiàn)是看門狗機(jī)制
raft算法的任期
在 raft 算法中,每個(gè)人都有一個(gè)任期,之后會(huì)被重新選舉。為了避免連任,一般會(huì)定期發(fā)送心跳來(lái)續(xù)約。
4.5 &
這個(gè)很容易理解,上面很多系統(tǒng)都采用了這種方案,尤其是在共識(shí)算法中,負(fù)責(zé)代表整個(gè)集群做出決策,并將決策傳播到所有其他服務(wù)器
領(lǐng)導(dǎo)者選舉發(fā)生在服務(wù)器啟動(dòng)時(shí)。每臺(tái)服務(wù)器在啟動(dòng)時(shí)都會(huì)發(fā)起一次領(lǐng)導(dǎo)選舉,并嘗試選舉一個(gè)領(lǐng)導(dǎo)。除非選舉出領(lǐng)導(dǎo)者,否則系統(tǒng)不接受任何客戶端請(qǐng)求
4.6
在-模型中,當(dāng)失效時(shí),無(wú)法確定已經(jīng)停止工作,比如網(wǎng)絡(luò)慢或者網(wǎng)絡(luò)分區(qū)可能觸發(fā)新的選舉,即使之前的還在運(yùn)行并且認(rèn)為依然是賽事的領(lǐng)頭羊
指在先前活動(dòng)的領(lǐng)導(dǎo)者周圍放置一個(gè)柵欄,使其無(wú)法訪問集群資源,從而阻止任何讀/寫請(qǐng)求被服務(wù)
4.7 法定人數(shù)
,常用于選舉和共識(shí)算法。當(dāng)超過的節(jié)點(diǎn)數(shù)被確認(rèn)后,提案通過(數(shù)據(jù)更新成功)。通常,法定人數(shù)是=一半的節(jié)點(diǎn)+1
4.8 高分
高水位線,()上的最后一個(gè)日志條目,并且該條目被成功復(fù)制到()>(),意味著該日志被整個(gè)集群接受
該條目在日志中的索引稱為高水位線索引。領(lǐng)導(dǎo)者僅將數(shù)據(jù)暴露給高水印索引。
例如,為了處理不可重復(fù)讀取并確保數(shù)據(jù)一致性,會(huì)跟蹤高水位線,這是特定分區(qū)的最大偏移量。用戶只能看到達(dá)到高水位線的消息。
4.9 Phi 累積故障檢測(cè)
使用歷史心跳信息的自適應(yīng)閾值
通用應(yīng)計(jì)故障檢測(cè)器不會(huì)判斷服務(wù)器是否處于活動(dòng)狀態(tài),但會(huì)輸出有關(guān)服務(wù)器的可疑級(jí)別。
eg(開源分布式數(shù)據(jù)庫(kù))使用 Phi 累積故障檢測(cè)算法來(lái)確定集群中節(jié)點(diǎn)的狀態(tài)
4.10 - 記錄預(yù)寫日志
預(yù)寫日志是針對(duì)操作系統(tǒng)中文件系統(tǒng)不一致問題的高級(jí)解決方案。當(dāng)我們提交寫入操作系統(tǒng)的文件緩存時(shí),業(yè)務(wù)會(huì)認(rèn)為已經(jīng)提交成功;有一個(gè)時(shí)差。如果此時(shí)機(jī)器宕機(jī),緩存中的數(shù)據(jù)就會(huì)丟失,導(dǎo)致完整性丟失。
為了解決這個(gè)問題,例如es等都采用了- log的機(jī)制來(lái)避免這個(gè)問題
:
:
4.11 段日志
將日志拆分為多個(gè)較小的文件,而不是單個(gè)大文件,以便于操作。
在啟動(dòng)時(shí)讀取單個(gè)日志文件可能會(huì)增長(zhǎng)并成為性能瓶頸。較舊的日志會(huì)定期清理,很難對(duì)單個(gè)大文件進(jìn)行清理操作。
單個(gè)日志被分成多個(gè)段。日志文件在指定的大小限制后滾動(dòng)。使用日志分段,需要一種簡(jiǎn)單的方法將邏輯日志偏移(或日志序列號(hào))映射到日志段文件。
這其實(shí)很常見。比如我們實(shí)際業(yè)務(wù)應(yīng)用配置的日志,一般都是按天拆分,固定大小網(wǎng)站建設(shè),并不是所有的日志都放在一個(gè)日志文件中。
再比如es的分段存儲(chǔ),一個(gè)就是一個(gè)小的存儲(chǔ)文件
4.12 檢查
在分布式系統(tǒng)中,當(dāng)數(shù)據(jù)在組件之間移動(dòng)時(shí),從節(jié)點(diǎn)獲取的數(shù)據(jù)可能會(huì)損壞。
計(jì)算校驗(yàn)和并將其與數(shù)據(jù)一起存儲(chǔ)。
要計(jì)算校驗(yàn)和,請(qǐng)使用加密哈希函數(shù),例如 MD5、SHA-1、SHA-256 或 SHA-512。哈希函數(shù)接受輸入數(shù)據(jù)并產(chǎn)生一個(gè)固定長(zhǎng)度的字符串(包含字母和數(shù)字);這個(gè)字符串稱為校驗(yàn)和。
當(dāng)系統(tǒng)存儲(chǔ)一些數(shù)據(jù)時(shí),它會(huì)計(jì)算數(shù)據(jù)的校驗(yàn)和,并將校驗(yàn)和與數(shù)據(jù)一起存儲(chǔ)。當(dāng)客戶端檢索數(shù)據(jù)時(shí),它會(huì)驗(yàn)證從服務(wù)器接收到的數(shù)據(jù)是否與存儲(chǔ)的校驗(yàn)和匹配。如果沒有,客戶端可能會(huì)選擇從另一個(gè)副本中檢索該數(shù)據(jù)。
HDFS 并將每個(gè)文件的校驗(yàn)和與數(shù)據(jù)一起存儲(chǔ)。
4.13 灰色總結(jié)