nosql-redis-網絡資料學習-06-分佈式數據庫CAP原理

一、關係型數據庫的ACID

  • A (Atomicity) 原子性
  • C (Consistency) 一致性
  • I (Isolation) 獨立性
  • D (Durability) 持久性

關係型數據庫遵循ACID規則
事務在英文中是transaction,和現實世界中的交易很相似,它有以下四個特性:數據庫

一、A (Atomicity) 原子性
原子性很容易理解,也就是說事務裏的全部操做要麼所有作完,要麼都不作,事務成功的條件是事務裏的全部操做都成功,只要有一個操做失敗,整個事務就失敗,須要回滾。好比銀行轉帳,從A帳戶轉100元至B帳戶,分爲兩個步驟:1)從A帳戶取100元;2)存入100元至B帳戶。這兩步要麼一塊兒完成,要麼一塊兒不完成,若是隻完成第一步,第二步失敗,錢會莫名其妙少了100元。服務器

二、C (Consistency) 一致性
一致性也比較容易理解,也就是說數據庫要一直處於一致的狀態,事務的運行不會改變數據庫本來的一致性約束。架構

三、I (Isolation) 獨立性
所謂的獨立性是指併發的事務之間不會互相影響,若是一個事務要訪問的數據正在被另一個事務修改,只要另一個事務未提交,它所訪問的數據就不受未提交事務的影響。好比現有有個交易是從A帳戶轉100元至B帳戶,在這個交易還未完成的狀況下,若是此時B查詢本身的帳戶,是看不到新增長的100元的併發

四、D (Durability) 持久性
持久性是指一旦事務提交後,它所作的修改將會永久的保存在數據庫上,即便出現宕機也不會丟失。分佈式

二、NoSql 的CAP

  • C:Consistency(強一致性)
    在分佈式系統中的全部數據備份,在同一時刻是否一樣的值。(等同於全部節點訪問同一份最新的數據副本)
  • A:Availability(可用性)
    在集羣中一部分節點故障後,集羣總體是否還能響應客戶端的讀寫請求。(對數據更新具有高可用性)
  • P:Partition tolerance(分區容錯性)
    以實際效果而言,分區至關於對通訊的時限要求。系統若是不能在時限內達成數據一致性,就意味着發生了分區的狀況,必須就當前操做在C和A之間作出選擇。
## 2.1 CAP 3選2 原則##
CAP原則又稱CAP定理,指的是在一個分佈式系統中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性),三者不可兼得。

clipboard.png

分佈式系統中P(分區容錯)是必須佔的一個。性能

  • CA 傳統Oracle數據庫
  • AP 大多數網站架構的選擇
  • CP Redis、Mongodb

解釋:
好比對於一個微博,在大量用戶狀況下,一致性能夠做爲一個次要條件,好比我發了一條微博,只要個人1千萬粉絲遲10秒看見不要緊(這時我能及時看見便可,讀己之所寫)網站

## 2.2 BASE原則 ##
BASE就是爲了解決關係數據庫強一致性引發的問題而引發的可用性下降而提出的解決方案。
BASE實際上是下面三個術語的縮寫:

    基本可用(Basically Available)
    軟狀態(Soft state)
    最終一致(Eventually consistent)spa

先犧牲C,最終base實現一致性。
    它的思想是經過讓系統放鬆對某一時刻數據一致性的要求來換取系統總體伸縮性和性能上改        
觀爲何這麼說呢,原因就在於大型系統每每因爲地域分佈和極高性能的要求,不可能採用分佈
式事務來完成這些指標,要想得到這些指標,咱們必須採用另一種方式來完成,這裏BASE就是
解決這個問題的辦法

## 2.3 分佈式 & 集羣 ##
1分佈式:**不一樣的多臺服務器上面部署不一樣的服務模塊**(工程),他們之間經過Rpc/Rmi之間通訊和調用,對外提供服務和組內協做。

2集羣:**不一樣的多臺服務器上面部署相同的服務模塊**,經過分佈式調度軟件進行統一的調度,對外提供服務和訪問。
相關文章
相關標籤/搜索