死磕Zookeeper系列-1-CAP與BASE理論

1. ACID

1、原子性 Atomicity
2、一致性 Consistency
3、隔離性 Isolation
4、持久性 Durability

1.1 原子性[A]

- 保證事務(wù)中的所有操作全部執(zhí)行或者全部不執(zhí)行.

1.2 一致性[C]

- 保證事務(wù)操作之前和之后都是一致的.

1.3 隔離性[I]

- 多個事務(wù)并發(fā)的話,應(yīng)該和多個事務(wù)串行執(zhí)行效果一致.
- 事務(wù)的四個隔離級別:
    - 串行化:保證所有情況下都不會發(fā)生。【鎖表】
    - 可重復(fù)讀:會出現(xiàn)幻讀?!緯i定所讀取的所有行】
    - 讀未提交:會出現(xiàn)臟讀、幻讀、不可重復(fù)讀。【隔離級別最低,并發(fā)性能高】
    - 讀已提交(默認(rèn)): 會出現(xiàn)幻讀、不可重復(fù)讀?!炬i住正在讀取的行】
    * 總結(jié):四個級別逐漸增強。每個級別分別解決一個問題,事務(wù)級別越高,性能越差,大多數(shù)環(huán)境下ReadCommit情況下就可以了。
- 臟讀、幻讀、不可重復(fù)讀:
    - 臟讀:一個事務(wù)讀取了另一個事務(wù)`未提交的數(shù)據(jù)`,而這個數(shù)據(jù)有可能被回滾。
    - 幻讀:事務(wù)不同獨立執(zhí)行時發(fā)生的一種現(xiàn)象。事務(wù)1讀取指定Where條件的結(jié)果集,然后事務(wù)2插入一條新數(shù)據(jù),而這條新數(shù)據(jù)剛好滿足事務(wù)1所查詢的條件,然后事務(wù)1再次查詢時,看到了事務(wù)2新提交的數(shù)據(jù)?!净米x強調(diào)的是新增、刪除。同樣的條件,兩次查詢的記錄數(shù)不同】
    - 不可重復(fù)讀:在一個事務(wù)范圍內(nèi),兩次查詢得到不同的結(jié)果?!静豢芍貜?fù)讀強調(diào)的是修改。同樣的條件,兩次查詢的記錄值不同】

1.4 持久性[D]

- 事務(wù)執(zhí)行完之后,對于數(shù)據(jù)庫的影響應(yīng)該是持久的.

2. CAP

1、一致性 Consistency
2、可用性 Availablity
3、分區(qū)容錯性 Partition Tolerance

2.1 一致性[C]

- 任何操作都是原子的.發(fā)生在后面的事件可以看到前面發(fā)生事件的結(jié)果;
- 注意:這里的一致性是指**強一致性**;

2.2 可用性[A]

- 對于用戶的每一個請求**在有限時間內(nèi)**內(nèi)**返回結(jié)果**.
- 注意:
    1. "有限時間內(nèi)": 是指 對于用戶的請求,系統(tǒng)必須存在合理的響應(yīng)時間,否則用戶便會對系統(tǒng)感到失望;
    2. "返回結(jié)果":是指 響應(yīng)結(jié)果能夠正常反映請求的處理結(jié)果,即成功或失敗,而不是讓用戶困惑的結(jié)果.

2.3 分區(qū)容錯性[P]

- 系統(tǒng)在遇到任何網(wǎng)絡(luò)故障時,仍能對外提供可用性和一致性服務(wù),除非整個網(wǎng)絡(luò)發(fā)生故障.
CAP理論
CAP理論
 * 一個分布式系統(tǒng)無法同時滿足以上三個需求,因此在實際運用時,我們就要拋棄其中一項.
 * CAP定理應(yīng)用:
    1. 放棄P:放棄P就意味著放棄了擴展性.就是把所有數(shù)據(jù)放在一個分布式節(jié)點上.
    2. 放棄A:系統(tǒng)遇到故障時,在等待時間內(nèi)系統(tǒng)無法對外提供正常服務(wù),即不可用.
    3. 放棄C:放棄強一致性,而保持?jǐn)?shù)據(jù)的最終一致性.引入**時間窗口**概念.
 * 對于分布式系統(tǒng)而言,網(wǎng)絡(luò)問題是必定會出現(xiàn)的異常情況,因為P是一個分布式系統(tǒng)必須面對和解決的問題.
 * 所以往往要根據(jù)業(yè)務(wù)權(quán)衡C和A之間的選擇.


3. BASE

1、基本可用:Basic Available
2、弱狀態(tài):Soft State
3、最終一致性:Eventually Consistent
* BASE理論是對CAP中**一致性和可用**性的權(quán)衡總結(jié).

3.1、基本可用[BA]

- 1. 概念
    分布式系統(tǒng)在出現(xiàn)故障時,允許**損失部分可用性**,但是系統(tǒng)還是可用的.

3.2、弱狀態(tài)[S]

- 1. 概念:
    和ACID強狀態(tài)相對應(yīng),是指系統(tǒng)中允許存在的**中間狀態(tài)**.
- 2. 不會影響系統(tǒng)的整體可用性;

3.3、最終一致性[E]

- 1. 概念:系統(tǒng)中的數(shù)據(jù),經(jīng)過同步之后最終能夠達到一個一致的狀態(tài).
- 2. 最終一致性的變種:
    2.1 因果一致性:
    2.2 讀己之所寫:
    2.3 會話一致性:
    2.4 單調(diào)讀一致性:
    2.5 單調(diào)寫一致性:

也可查看https://www.zybuluo.com/yulongsun/note/1011165

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容