什麼是 CAP 定理?
.1 一致性(Consistency)
一致性指「all nodes see the same data at the same time」,即更新操做成功並返回客戶端完成後,全部節點在同一時間的數據徹底一致。
這裏的一直性是指的強一致性,通常關係型數據庫就有強一致性特性。node
2,可用性(Availability)
可用性指「Reads and writes always succeed」,即服務一直可用,並且是正常響應時間。
異地雙活或者本地多活,可是一個區域的服務掛掉的狀況下 其餘地區能正常提供服務,而且是正常響應時間數據庫
3,分區容錯性(Partition tolerance)
分區容錯性指「the system continues to operate despite arbitrary message loss or failure of part of the system」,即分佈式系統在遇到某節點或網絡分區故障的時候,仍然可以對外提供知足一致性和可用性的服務。
區域故障也能穩定提供服務
CAP權衡
CAP理論,咱們知道沒法同時知足一致性、可用性和分區容錯性這三個特性。通常都是CP或者AP
CP 多用於金融系統
AP 用於普通分佈式架構
BASE 理論
解決BASE理論的延生
BASE理論是對CAP中的一致性及可用性進行一個權衡的結果,其核心思想是:咱們沒法作到強一致性,那麼咱們能夠經過犧牲強一致性得到可用性, 通常應用於服務化系統的應用層或者大數據處理系統中,採用適當的方式 達到最終一致性。網絡
BA:Basically Available(基本可用)
基本可用:是對A(可用性)的一個妥協,好比秒殺場景下,或者雪崩的業務場景下,能夠降級處理,使核心功能可用,而不是全部的功能可用。或者延遲完成,好比經過削峯限流,來延遲響應架構
S:Soft state(軟狀態)
指容許部分節點數據存在必定的延時,這個延時不影響可用性。例如一次寫操做只更新了一個結點就返回成功。那麼其餘節點和這個節點的數據時不一致的。此時的數據狀態就是軟狀態。該狀態不能一直存在,必需要有個期限,系統保證在沒有後續更新的前提下,在這個期限後,系統最終返回上一次更新操做的值,從而達到數據的最終一致性,這個容忍期限(不一致窗口的時間)取決於通訊延遲,系統負載,數據複製方案設計,複製副本個數等,DNS是一個典型的最終一致性系統併發
E:Eventually consistent(最終一致性)
指最終數據要實現一致性,例如:軟狀態的數據最終咱們要經過一些手段將數據同步到其餘數據節點上。例如使用mq。
ACID規則
其中 又去關係性數據庫遵循的ACID規則有所區別
A (Atomicity) 原子性
原子性很容易理解,也就是說事務裏的全部操做要麼所有作完,要麼都不作,事務成功的條件是事務裏的全部操做都成功,只要有一個操做失敗,整個事務就失敗,須要回滾。分佈式
好比銀行轉帳,從 A 帳戶轉 100 元至 B 帳戶,分爲兩個步驟:1)從 A 帳戶取 100 元;2)存入 100 元至 B 帳戶。這兩步要麼一塊兒完成,要麼一塊兒不完成,若是隻完成第一步,第二步失敗,錢會莫名其妙少了 100 元。ide
C (Consistency) 一致性
一致性也比較容易理解,也就是說數據庫要一直處於一致的狀態,事務的運行不會改變數據庫本來的一致性約束。大數據
例如現有完整性約束 a+b=10,若是一個事務改變了 a,那麼必須得改變 b,使得事務結束後依然知足 a+b=10,不然事務失敗。設計
I (Isolation) 隔離性
所謂的隔離性是指併發的事務之間不會互相影響,若是一個事務要訪問的數據正在被另一個事務修改,只要另一個事務未提交,它所訪問的數據就不受未提交事務的影響。事務
好比如今有個交易是從 A 帳戶轉 100 元至 B 帳戶,在這個交易還未完成的狀況下,若是此時 B 查詢本身的帳戶,是看不到新增長的 100 元的。
D (Durability) 持久性持久性是指一旦事務提交後,它所作的修改將會永久的保存在數據庫上,即便出現宕機也不會丟失。