理解CAP理论
1. 理論什么是CAP?
cap定理,它的提出是對于一個分布式系統得出的一個觀點,是不能同時滿足下面三點
- 一致性
- 可用性
- 分區容忍性
CAP理論認為,分布式系統最多只能同時滿足其中的兩個特性,而無法同時滿足全部三個特性。這是因為在分布式系統中,網絡分區和節點故障是不可避免的,而保證一致性和可用性需要跨節點協調,這會增加網絡延遲和系統復雜度。
2. 怎么會不可兼得?
一致性(Consistency):在分布式系統中,所有節點看到的數據都是相同的,即系統的數據在任何時刻都是一致的(就是所有的節點訪問同樣的數據)。
可用性(Availability):在集群中一部分節點故障后,仍然保持集群整體對客戶端的響應(對數據更新具備高可用)。
分區容錯性(Partition tolerance):大部分的分布式系統都分布在多個子網絡里,每個子網絡都分為一個區。而分區容錯的意思是,每個分區的之間的通信可能會失敗。
? 一個分布式系統里面,節點組成的網絡本來應該是連通的。然而可能因為一些故障,使得有些節點之間不連通了,整個網絡就分成了幾塊區域。數據就散布在了這些不連通的區域中。這就叫分區。
? 當你一個數據項只在一個節點中保存,那么分區出現后,和這個節點不連通的部分就訪問不到這個數據了。這時分區就是無法容忍的。
? 提高分區容忍性的辦法就是一個數據項復制到多個節點上,那么出現分區之后,這一數據項就可能分布到各個區里。容忍性就提高了。
? 然而,要把數據復制到多個節點,就會帶來一致性的問題,就是多個節點上面的數據可能是不一致的。要保證一致,每次寫操作就都要等待全部節點寫成功,而這等待又會帶來可用性的問題。
? 總的來說就是,數據存在的節點越多,分區容忍性越高,但要復制更新的數據就越多,一致性就越難保證。為了保證一致性,更新所有節點數據所需要的時間就越長,可用性就會降低。
3. 那我們怎么選
? 上述,既然三者不可兼得,那我們在設計分布式系統時要根據實際情況進行權衡和取舍,并在一致性、可用性和分區容錯性之間做出適當的平衡。
- 選擇CA:放棄分區容錯性,保證一致性和可用性。這種策略適用于小規模的集中式系統,如傳統的關系型數據庫系統。假設不考慮分區(P)的情況下,只有一個分區(副本),副本的一致性自不必說,自然是一致的;可用性方面,一個節點的寫入不需要同步到其他節點,可以高效完成。如果增加多個分區(提高分區容錯性),數據的寫入需要同步到多個節點(強一致性,所有節點同步成功后再返回用戶),增加了同步時間和同步失敗的可能性,降低了可用性;如果采用弱一致性,即寫入操作在主節點成功后即返回用戶結果,再通過異步方式同步到多個分區,那么會增加同步失敗和數據丟失的幾率,降低了一致性。
- 選擇CP:放棄可用性,保證一致性和分區容錯性。這種策略適用于對數據一致性要求比較高的系統,如金融交易系統。假設不考慮可用性(A)的情況下,多個分區之間可以采用強一致性的機制,保證數據的高度一致性(要么都成功要么都失敗)。比如某個分區出現了故障或者分隔,分區沒有了響應,由于放棄了可用性,所以可以無限等待并不斷重試直到網絡恢復,分區可用后將副本數據同步到所有節點。
- 選擇AP:放棄一致性,保證可用性和分區容錯性。這種策略適用于對數據實時性要求比較高的系統,如社交網絡等。假設不考慮一致性(C)的情況下,多個分區和副本可以提供高可用性。分區越多,用戶越能就近訪問,提供響應速度;放棄了一致性后,副本的寫入操作可以寫入主節點成功后即可返回成功,獲得搞可用性,然后通過異步的方式將副本同步到多個分區節點上。
4. 補充
CAP理論提出就是針對分布式數據庫環境的,所以,P這個屬性是必須具備的。(即CAP實際上只有AP和CP兩種選項)
? 在分布式環境下,為了保證系統可用性,通常都采取了復制的方式,避免一個節點損壞,導致系統不可用。那么就出現了每個節點上的數據出現了很多個副本的情況,而數據從一個節點復制到另外的節點時需要時間和要求網絡暢通的,所以,當P發生時,也就是無法向某個節點復制數據時,這時候你有兩個選擇:
- 選擇可用性 A(Availability),此時,那個失去聯系的節點依然可以向系統提供服務,不過它的數據就不能保證是同步的了(失去了C屬性)。
- 選擇一致性C(Consistency),為了保證數據庫的一致性,我們必須等待失去聯系的節點恢復過來,在這個過程中,那個節點是不允許對外提供服務的,這時候系統處于不可用狀態(失去了A屬性)。
總結
- 上一篇: 用ArcGIS模型构建器生成、导出Pyt
- 下一篇: 山东科技大学计算机毕业论文,山东科技大学