NoSQL 中的 CAP
1、CAP概述
CAP理論 是由 EricBrewer 教授 提出的,在設計和部署分布式應用的時候,存在三個核心的系統需求,這個三個需求之間存在一定的特殊關系。三個需求如下:
C: Consistency (一致性)
 A: Availability (可用性)
 P: Partition Tolerance (分區容錯性)
 CAP理論的核心是:一個分布式系統不可能同時很好的滿足 一致性,可用性和分區容錯性這三個需求,最多只能同時較好的滿足兩個。
因此,根據CAP原理,將NoSQL數據庫分成滿足CA原則、CP原則和AP原則 三大類:
 CA - 單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大。 (傳統數據庫)
 CP - 滿足一致性,分區容忍性的系統,通常性能不是特別高。 (Redis、MongoDB)
 AP - 滿足可用性,分區容忍性的系統,通??赡軐σ恢滦砸蟮鸵恍?。 (大多數網站架構的選擇)
2、CAP定義
(1)、Consistency 一致性
一致性又稱為原子性或者事務性。表示一個事務的操作是不可分割的,要不然這個事務完成,要不然這個事務不完成,不會出現這個事務完成了一半這樣的情況。這種事務的原子性使得數據具有一致性。
我們通常情況下在數據庫中存在的臟數據就屬于數據沒有具有一致性的表現。而在分布式系統中,經常出現的一個數據不具有一致性的情況是讀寫數據時缺乏一致性。比如兩個節點數據冗余,第一個節點有一個寫操作,數據更新以后沒有有效的使得第二個節點更新數據,在讀取第二個節點的時候就會出現不一致的問題出現。
傳統的ACID數據庫是很少存在一致性問題的,因為數據的單點原因,數據的存取又具有良好的事務性,不會出現讀寫的不一致。
(2)、Availability 可用性
好的可用性主要是指系統能夠很好的為用戶服務,不出現用戶操作失敗或者訪問超時等用戶體驗不好的情況。可用性通常情況下可用性和分布式數據冗余,負載均衡等有著很大的關聯。
(3)、Partition Tolerance 分區容錯性
分區容錯性和擴展性緊密相關。在分布式應用中,可能因為一些分布式的原因導致系統無法正常運轉。好的分區容錯性要求能夠使應用雖然是一個分布式系統,而看上去卻好像是在一個可以運轉正常的整體。比如現在的分布式系統中有某一個或者幾個機器宕掉了,其他剩下的機器還能夠正常運轉滿足系統需求,這樣就具有好的分區容錯性。
3、CAP理論的意義
隨著互聯網應用的飛速發展,數據量與日俱增,傳統的ACID數據庫已經不能滿足如此大的海量數據存儲了。這個時候需要設計出好的分布式數據存儲方式。而這些分布式數據存儲方式受到CAP理論的約束,不可能達到高一致性,高可用性,高分區容錯性的完美設計。所以我們在設計的時候要懂得取舍,重點關注對應用需求來說比較重要的,而放棄不重要的,在CAP這三者之間進行取舍,設計出貼合應用的存儲方案。
相關文章鏈接
鏈接1: link.
 鏈接2: link.
總結
以上是生活随笔為你收集整理的NoSQL 中的 CAP的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 一支笔,一颗心
- 下一篇: echarts 修改地图经纬度
