分布式數據庫中CAP原理(CAP+BASE)
傳統的ACID
1)原子性(Atomicity):
事務里的所有操作要么全部做完,要么都不做,事務成功的條件是事務里的所有操作都成功。
2)一致性(Consistency):
數據庫要一直處於一致的狀態,事務的運行不會改變數據庫原本的一致性約束。
3)獨立性(Isolation):
指並發的事務之間不會相互影響,一個事務要訪問的數據正在被另一個事務修改,那么在另一個事務提交之前,看到的數據是未改變的。
4)持久性(Durability):
持久性是指事務提交后,他所做的修改將會永久的保存在數據庫上,即使出現宕機也不會丟失。
分布式數據庫的CAP
(nosql三個有且只能滿足兩個)
1)強一致性(Consistency)
2)可用性(Availability)
3)分區容錯性(Partition tolerance)
CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性、可用性和分區容錯性三個需求
因此,CAP原理將NOSQL數據庫分成了滿足以下原則的三大類:
1)CA -單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大。
注:傳統Oracle數據庫
2)CP -滿足一致性、分區容錯性的系統,通常性能不是特別高。
注:大多數網站架構的選擇
3)AP -滿足可用性、分區容錯性的系統,通常可能對一致性要求低一些。
注:redis、mongodb
BASE
為了解決關系數據庫強一致性引起的問題而引起的可用性降低而提出的解決方案
BASE由三個術語縮寫:
1)基本可用(Basically Available)
2)軟狀態(Soft state)
3)最終一直(Eventually Consistent)
其思想為:通過系統放松對某一時刻數據一致性的要求來換取系統整體伸縮性和性能上的改觀。
分布式系統:
由多台計算機和通信的軟件組件通過計算機網絡連接(本地網絡或廣域網)組成。分布式系統是建立在網絡之上的軟件系統。正式因為軟件的特性,所以分布式系統具有高度的內聚性和透明性。因此,網絡和分布式系統之間的區別更多的在於高層軟件(特別是操作系統),而不是硬件。分布式系統可以應用在不同的平台上。如:PC、工作站、局域網和廣域網上等。
(簡單來說~)
1)分布式:不同的多台服務器上面部署不同的服務模塊(工程),他們之間通過 Rpc 或 Rmi 之間通信和調用,對外提供服務和組內協作。
2)集群: 不同的多台服務器上面部署相同的服務模塊,通過分布式調度軟件進行統一的調度,對外提供服務和訪問。
感謝來自尚硅谷的視頻講解~~~