日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

理解CAP理论

發布時間:2024/1/18 windows 50 coder
生活随笔 收集整理的這篇文章主要介紹了 理解CAP理论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 理論什么是CAP?

cap定理,它的提出是對于一個分布式系統得出的一個觀點,是不能同時滿足下面三點

  • 一致性
  • 可用性
  • 分區容忍性

CAP理論認為,分布式系統最多只能同時滿足其中的兩個特性,而無法同時滿足全部三個特性。這是因為在分布式系統中,網絡分區和節點故障是不可避免的,而保證一致性和可用性需要跨節點協調,這會增加網絡延遲和系統復雜度。


2. 怎么會不可兼得?

一致性(Consistency):在分布式系統中,所有節點看到的數據都是相同的,即系統的數據在任何時刻都是一致的(就是所有的節點訪問同樣的數據)。

可用性(Availability):在集群中一部分節點故障后,仍然保持集群整體對客戶端的響應(對數據更新具備高可用)。

分區容錯性(Partition tolerance):大部分的分布式系統都分布在多個子網絡里,每個子網絡都分為一個區。而分區容錯的意思是,每個分區的之間的通信可能會失敗。

? 一個分布式系統里面,節點組成的網絡本來應該是連通的。然而可能因為一些故障,使得有些節點之間不連通了,整個網絡就分成了幾塊區域。數據就散布在了這些不連通的區域中。這就叫分區。

? 當你一個數據項只在一個節點中保存,那么分區出現后,和這個節點不連通的部分就訪問不到這個數據了。這時分區就是無法容忍的。
? 提高分區容忍性的辦法就是一個數據項復制到多個節點上,那么出現分區之后,這一數據項就可能分布到各個區里。容忍性就提高了。
? 然而,要把數據復制到多個節點,就會帶來一致性的問題,就是多個節點上面的數據可能是不一致的。要保證一致,每次寫操作就都要等待全部節點寫成功,而這等待又會帶來可用性的問題。

? 總的來說就是,數據存在的節點越多,分區容忍性越高,但要復制更新的數據就越多,一致性就越難保證。為了保證一致性,更新所有節點數據所需要的時間就越長,可用性就會降低。


3. 那我們怎么選

? 上述,既然三者不可兼得,那我們在設計分布式系統時要根據實際情況進行權衡和取舍,并在一致性、可用性和分區容錯性之間做出適當的平衡。

  • 選擇CA:放棄分區容錯性,保證一致性和可用性。這種策略適用于小規模的集中式系統,如傳統的關系型數據庫系統。假設不考慮分區(P)的情況下,只有一個分區(副本),副本的一致性自不必說,自然是一致的;可用性方面,一個節點的寫入不需要同步到其他節點,可以高效完成。如果增加多個分區(提高分區容錯性),數據的寫入需要同步到多個節點(強一致性,所有節點同步成功后再返回用戶),增加了同步時間和同步失敗的可能性,降低了可用性;如果采用弱一致性,即寫入操作在主節點成功后即返回用戶結果,再通過異步方式同步到多個分區,那么會增加同步失敗和數據丟失的幾率,降低了一致性。
  • 選擇CP:放棄可用性,保證一致性和分區容錯性。這種策略適用于對數據一致性要求比較高的系統,如金融交易系統。假設不考慮可用性(A)的情況下,多個分區之間可以采用強一致性的機制,保證數據的高度一致性(要么都成功要么都失敗)。比如某個分區出現了故障或者分隔,分區沒有了響應,由于放棄了可用性,所以可以無限等待并不斷重試直到網絡恢復,分區可用后將副本數據同步到所有節點。
  • 選擇AP:放棄一致性,保證可用性和分區容錯性。這種策略適用于對數據實時性要求比較高的系統,如社交網絡等。假設不考慮一致性(C)的情況下,多個分區和副本可以提供高可用性。分區越多,用戶越能就近訪問,提供響應速度;放棄了一致性后,副本的寫入操作可以寫入主節點成功后即可返回成功,獲得搞可用性,然后通過異步的方式將副本同步到多個分區節點上。

4. 補充

CAP理論提出就是針對分布式數據庫環境的,所以,P這個屬性是必須具備的。(即CAP實際上只有AP和CP兩種選項)

? 在分布式環境下,為了保證系統可用性,通常都采取了復制的方式,避免一個節點損壞,導致系統不可用。那么就出現了每個節點上的數據出現了很多個副本的情況,而數據從一個節點復制到另外的節點時需要時間和要求網絡暢通的,所以,當P發生時,也就是無法向某個節點復制數據時,這時候你有兩個選擇:

  1. 選擇可用性 A(Availability),此時,那個失去聯系的節點依然可以向系統提供服務,不過它的數據就不能保證是同步的了(失去了C屬性)。
  2. 選擇一致性C(Consistency),為了保證數據庫的一致性,我們必須等待失去聯系的節點恢復過來,在這個過程中,那個節點是不允許對外提供服務的,這時候系統處于不可用狀態(失去了A屬性)。

總結

以上是生活随笔為你收集整理的理解CAP理论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。