柚子快報邀請碼778899分享:分布式理論基礎
柚子快報邀請碼778899分享:分布式理論基礎
文章目錄
1、理論基礎2、CAP定理1_一致性2_可用性3_分區(qū)容錯性4_總結
3、BASE理論1_Basically Available(基本可用)2_Soft State(軟狀態(tài))3_Eventually Consistent(最終一致性)4_總結
1、理論基礎
在計算機科學領域,分布式一致性是一個相當重要的問題。
分布式系統(tǒng)要解決的一個重要問題是數(shù)據(jù)復制。
數(shù)據(jù)復制為分布式系統(tǒng)帶來了高可用、高性能,但也同時帶來了分布式一致性挑戰(zhàn):在對一個副本數(shù)據(jù)進行更新時,必須確保也更新其他副本,否則不同副本的數(shù)據(jù)將不一致。
如何解決這個問題 ?
一種思路是:阻塞 “寫” 操作,直到數(shù)據(jù)復制完成。
但這個思路在解決一致性問題的同時,又帶來了 “寫” 操作性能低的問題。
如果有高并發(fā)的 “寫” 請求,則在使用這個思路之后,大量 “寫” 請求阻塞,導致系統(tǒng)整體性能急劇下降。
如何既保證數(shù)據(jù)的一致性,又不影響系統(tǒng)運行的性能,是每一個分布式系統(tǒng)都需要重點考慮和權衡的問題。
如何實現(xiàn)一種既能保證ACID特性,又能保證高性能的分布式事務處理系統(tǒng)是一個世界性難題。
在技術演進過程中,出現(xiàn)了諸如CAP和BASE 這樣的分布式系統(tǒng)理論。
2、CAP定理
1998年,加州大學的計算機科學家 Eric Brewer 提出,分布式系統(tǒng)有三個指標。
Consistency(一致性)Availability(可用性)Partition tolerance (分區(qū)容錯性)
它們的第一個字母分別是 C、A、P。
Eric Brewer 說,這三個指標不可能同時做到,這個結論就叫做 CAP 定理。
CAP定理是分布式系統(tǒng)的指導理論,它指出:一個分布式系統(tǒng)不可能同時滿足 一致性(C: Consistency)、可用性(A: Availability) 和 分區(qū)容錯性(P: PartitionTolerance) 這3個需求,最多只能同時滿足其中兩項。
1_一致性
Consistency (一致性):指 "all nodes see the same data at the same time",即更新操作成功并返回客戶端后,所有節(jié)點在同一時間的數(shù)據(jù)完全一致,這就是分布式的一致性。
一致性的問題在并發(fā)系統(tǒng)中不可避免,對于客戶端來說,一致性指的是并發(fā)訪問時更新過的數(shù)據(jù)如何獲取的問題。
從服務端來看,則是更新如何復制分布到整個系統(tǒng),以保證數(shù)據(jù)最終一致。
這里的一致性是指強一致性,一般關系型數(shù)據(jù)庫就具有強-致性特性。
2_可用性
Availability (可用性):指 "Reads and writes always succeed",即服務一直可用,而且是正常響應時間。
好的可用性主要是指系統(tǒng)能夠很好的為用戶服務,不出現(xiàn)用戶操作失敗或者訪問超時等用戶體驗不好的情況。
3_分區(qū)容錯性
Partition Tolerance (分區(qū)容錯性):指 "the system continues to operate despite arbitrary message loss or failure of part of the system",即分布式系統(tǒng)在遇到某節(jié)點或網絡分區(qū)故障的時候,仍然能夠對外提供滿足一致性和可用性的服務。
分區(qū)容錯性要求能夠使應用雖然是一個分布式系統(tǒng),而看上去卻好像是在一個可以運轉正常的整體。
比如現(xiàn)在的分布式系統(tǒng)中有某一個或者幾個機器宕掉或失聯(lián)了,其他剩下的機器還能夠正常運轉滿足系統(tǒng)需求,對于用戶而言并沒有什么體驗上的影響。
因為分布式系統(tǒng)無法同時滿足一致性、可用性、分區(qū)容錯性這3個基本需求,所以我們在設計分布式系統(tǒng)時就必須有所取舍。
對于分布式系統(tǒng)而言,分區(qū)容錯性是最基本的要求,因為既然是一個分布式系統(tǒng),那么分布式系統(tǒng)中的組件必然會被部署到不同的節(jié)點,否則也就無所謂分布式系統(tǒng)了,因此必然會出現(xiàn)子網絡。
而對于分布式系統(tǒng)而言,網絡又必定會出現(xiàn)異常情況因此,分區(qū)容錯性就成為了分布式系統(tǒng)必然需要面對和解決的問題。
4_總結
在分布式系統(tǒng)中,系統(tǒng)間的網絡不能100%保證健康,一定會有故障的時候,而服務有必須對外保證服務。因此Partition Tolerance 不可避免。
當節(jié)點接收到新的數(shù)據(jù)變更時,就會出現(xiàn)問題了:
如果此時要保證一致性,就必須等待網絡恢復,完成數(shù)據(jù)同步后,整個集群才對外提供服務,服務處于阻塞狀態(tài),不可用。
如果此時要保證可用性,就不能等待網絡恢復,那 node01、node02 與 node03 之間就會出現(xiàn)數(shù)據(jù)不一致。
也就是說,在P一定會出現(xiàn)的情況下,A和C之間只能實現(xiàn)一個。
CP without A,即實現(xiàn)一致性和分區(qū)容錯性。
此組合為數(shù)據(jù)強一致性模式,即要求在多服務之間數(shù)據(jù)一定要一致,弱化了可用性。 一些對數(shù)據(jù)要求比較高的場景(比如金融業(yè)務等)使用此模式,這種模式性能偏低。 常用方案有 XA 兩階段提交、Seata AT 模式的“讀已提交”級別等。
AP without C,即實現(xiàn)可用性和分區(qū)容錯性。
此組合為數(shù)據(jù)最終一致性模式,即要求所有服務都可用,弱化了一致性。 互聯(lián)網分布式服務多數(shù)基于AP,這種模式性能高,可以滿足高并發(fā)的業(yè)務需求。 常用方案有TCC、基于消息的最終一致性、Saga等。
CA without P,即實現(xiàn)一致性和可用性:
如果不要求P(不允許分區(qū)),則C(強一致性)和A(可用性)是可以保證的。 但放棄P的同時也就意味著放棄了系統(tǒng)的擴展性,也就是分布式節(jié)點受限,沒辦法部署子節(jié)點,這是違背分布式系統(tǒng)設計的初衷的。
系統(tǒng)架構師往往需要把精力花在如何根據(jù)業(yè)務特點在 C(一致性) 和 A(可用性) 之間做選擇,即選擇 CP 還是 AP。
3、BASE理論
BASE是 Basically Available(基本可用)、Soft State(軟狀態(tài)) 和 EventuallyConsistency(最終一致性) 這3個短語的縮寫。
BASE理論是對CAP中的一致性及可用性進行權衡的結果,其核心思想是:無法做到強一致性,那么可以通過犧牲強一致性來獲得可用性。
BASE理論是對CAP的一種解決思路,包含三個思想:
1_Basically Available(基本可用)
基本可用是對 A(可用性) 的一個妥協(xié),即在分布式系統(tǒng)出現(xiàn)不可預知故障時,允許損失部分可用性。比如在秒殺場景和雪崩的業(yè)務場景下進行降級處理,使核心功能可用,而不是所有的功能可用。
分布式系統(tǒng)在出現(xiàn)故障時,允許損失部分可用性,即保證核心可用。
2_Soft State(軟狀態(tài))
軟狀態(tài)是相對于原子性而言的。
要求多個節(jié)點的數(shù)據(jù)副本是一致的,這是一種“硬狀態(tài)”。
“軟狀態(tài)” 指的是:允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認為該狀態(tài)不影響系統(tǒng)的整體可用性,即允許系統(tǒng)在多個不同節(jié)點的數(shù)據(jù)副本上存在數(shù)據(jù)延時。
在一定時間內,允許出現(xiàn)中間狀態(tài),比如臨時的不一致狀態(tài)。
3_Eventually Consistent(最終一致性)
不可能一直是 “軟狀態(tài)” ,必須有個時間期限。
在時間期限過后,應當保證所有副本保持數(shù)據(jù)一致性,從而達到數(shù)據(jù)的最終一致性。
這個時間期限取決于網絡延時、系統(tǒng)負載、數(shù)據(jù)復制方案設計等因素。
雖然無法保證強一致性,但是在軟狀態(tài)結束后,最終達到數(shù)據(jù)一致。
不只是分布式系統(tǒng)使用最終一致性,關系型數(shù)據(jù)庫在某個功能上也使用最終一致性。
比如在備份時,數(shù)據(jù)庫的復制過程是需要時間的,在這個復制過程中,業(yè)務讀取的值就是“舊”的。
當然,最終還是達到了數(shù)據(jù)一致性。
4_總結
總體來說,BASE 理論面向的是大型高可用、可擴展的分布式系統(tǒng)。
不同于 ACID,BASE 理論提出通過犧牲強一致性來獲得可用性,并允許在一定時間內的不一致,但是最終達到一致。
在實際的分布式場景中,不同業(yè)務對數(shù)據(jù)的一致性要求不一樣。因此在設計時,往往結合使用 ACID 和 BASE 理論。
柚子快報邀請碼778899分享:分布式理論基礎
精彩鏈接
本文內容根據(jù)網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。