分布式環境下的資料一致性問題與協議

2021-10-23 14:55:50 字數 2277 閱讀 5094

1.分布式環境下的資料一致性

在分布式環境下 機器越多,就難以保證各個機器之間的資料都是一樣的,各個節點的機器總會因為 機器故障/網路延遲/處理能力不同 等原因 導致同乙份資料,在不同的機器中,很難達到一致的情況。

2.cap理論

cap理論 即 c 一致性 a 可用性 p 分割槽容錯性

一致性是指,乙個集群中n臺機器的資料都是一樣的。

可用性 是指, 這個集群可以正常對外提供服務的能力

分割槽容錯性,比如說這個集群中 ,某個機器掛了,對整個集群的影響程度。

很容易就可以發現,這三個標準,無法同時滿足。

比如說要保證一致性,那麼集群的機器數量越多,相同的乙份的資料,寫入到這個集群中,所需要的時間就越多。乙份資料寫入到一台機器成功,跟保證一條資料寫入到100臺機器都成功,所需要的時間差異是巨大的。 如果非要保證強一致性,那麼就會影響可用性,也就是 這100臺機器都寫入成功之前,不允許該集群對外提供服務,因為如果對外提供服務,就可能會讓外界獲取到不一致的資料。

比如說 資料a同步到了第87臺資料,然後使用者讀的是第99臺的資料,因為第99臺機器沒有完成資料的寫入,所以使用者讀不到,會認為該資料不存在於這個集群中。

因此要如果保證強一致性,必定會影響可用性。

同理,如果要保證可用性,就必然影響一致性,可用性程度越高,一致性就越弱。

分割槽容錯性越強,說明某個機器掛了對這個集群的影響越小,說明這個集群的機器數量就越多

,機器越多,如果要保證強一致性,可用性就受影響,如果要保可用性,一致性就越弱。

3.base理論

業內有人根據cap理論提出了base理論,這是乙個均衡的結果。

base理論是指 ,ba 基本可用 s 軟狀態 e 最終一致性

基本可用,是指當故障發生時候,服務可以降級 限流等,但是系統本身必須是可用的 ,對應分布容錯性。

軟狀態 就是允許乙份資料存在中間狀態,允許資料在不同機器之間存在同步延時

最終一致性 系統中所有資料,經過一段時間之後,最終能達成一致。

4.強一致性 二階段提交/三階段提交

分布式事務中, 為了保證強一致性提出的解決方案,就是二階段提交和三階段提交。

二階段提交:

引入中間協調器,由協調器來控制事務的執行和回滾。

所謂的二階段 就是

一階段 提交事務請求

協調器通知各個節點執行事務,然後接收執行結果,比如說通知a和b執行事務,然後a和b在本地執行,

將執行結果告知給協調器。

二 階段 執行事務請求

協調器根據a和b反饋的執行結果,如果a和b都成功,然後就通知a和b提交事務,事務結束。。

如果a和b之間 任一失敗,則通知a和b 回滾。 事務結束。

(資料庫的事務,就是先執行,然後再commit或者rollback ,commit才算是有效的事務。)

二階段提交 實現簡單,也能滿足強一致性。 問題在於,容易出問題。

1.阻塞 任一機器 ,都需要等待其他機器響應完成,這個期間 事務不提交 ,也就是事務資源不釋放,會影響系統效能。

2.單點問題,如果協調器掛了,就涼了。 如果在階段二 協調器掛了,各個機器收不到協調器的通知,事務就一直卡在那裡。

3.腦裂

也就是資料不一致,如果通知commit或者rollback的時候,有的收到,有的因為網路問題沒收到,此時資料就不一致了。

三階段提交

針對以上的問題,進行優化之後 有了三階段提交 。

一階段先詢問是否能執行

二階段根據詢問的結果 判斷是否通知各個節點進行執行 (如果有人沒響應 或者響應超時 或者反饋的是不能執行,該事務都不會執行)。 如果可以執行 通知各個節點進行執行

三階段根據執行的結果 判斷是否要回滾還是提交。 (如果有人沒響應 或者響應超時 或者反饋的是執行失敗,都通知回滾)

優化了單點問題,如果各個機器在階段三 收不到來自協調器的通知,會自動提交事務。

缺點:資料不一致的風險仍然存在,比如說 協調器通知是回滾,但是有的機器 沒收到,然後自動提交了。

5.paxos演算法

業內解決目前分布式資料一致性問題最廣泛的一致性協調

解決的問題是,將所有節點都寫入相同的值,且寫入後不變。

引入半數投票規則,少數服從多數,而且節點之間的身份可以輪換,解決了單點,無限期等待和腦裂問題,是目前最好的分布式一致性協議之一。

將節點劃分為3個角色

proposer 提議者 負責發起提議

accpetor審核者 負責接受提議

learner 執行者 負責推廣提議

這裡每乙個提議就是乙個事務請求

paxos保證,多個議案只有乙個會被選擇,且選中的就不能變了,然後將選中的這個推廣到整個集群。

raft協議 分布式環境下的資料一致性問題

閱讀了乙個有意思的ppt,是standford大學發表的raft協議 下面自己總結下咯 1.raft是乙個實現了解決分布式一致性問題的協議 2.分布式環境下的每個節點有三種狀態 follower candidate leader 3.所有的節點開始都是follower狀態 一旦他們不能檢測到lead...

分布式一致性問題

典型情況 三個副本構成乙個group 1.強一致性 所有的副本更新成功才返回。同時,p向s1 s2同步的過程,可以進行優化,借鑑gfs的流水線複製方式 p s1 s1 s2 以便充分利用每個node的頻寬資源。2.最終一致性 在經過乙個不一致視窗後,副本最終處於一致的狀態。如上圖是一種簡單的最終一致...

分布式一致性問題。

在電腦科學領域,分布式一致性問題是乙個相當重要,且被廣泛探索與論證的問題,通常存在於諸如分布式檔案系統 快取系統和資料庫等大型分布式儲存系統中。什麼是分布式一致性?分布式一致性分為哪些型別?分布式系統達到一致性後將會是乙個什麼樣的狀態?如果失去了一致性約束,分布式系統是否還可以依賴?如果一味地追求一...