淺談CAP理論

概述

CAP原則又稱CAP定理,指的是在一個分布式系統(tǒng)中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區(qū)容錯性),三者不可得兼,通常只能取其二。

  • C(一致性):在分布式系統(tǒng)中所有的數(shù)據(jù)備份,在同一時刻是否有同樣的值。
  • A(可用性):好的響應性能。
  • P(分區(qū)容錯性):在網(wǎng)絡上有部分消息丟失,系統(tǒng)是否能正常運行。
    例如:
  • CA without P
    單節(jié)點關系型數(shù)據(jù)庫,不具備分區(qū)容錯性,顯然一旦單個節(jié)點掛掉,整個數(shù)據(jù)庫系統(tǒng)就全掛掉。但是卻擁有一致性和可用性,單點數(shù)據(jù)庫對事務的支持,以及多表關聯(lián)是非常容易實現(xiàn)的。
  • CP without A
    在分布式環(huán)境下,為了確保一致性,往往會導致可用性降低。例如service A 和 service B為了確保一致性,會使用到分布式事務或者分布式鎖,這些操作會導致處理時間加長,而這些service的分區(qū)更會加重這種情況。
    例如zookeeper,可以實現(xiàn)集群,具備P,為了強一致性,zookeeper會兩兩通信,保證數(shù)據(jù)一致。當集群節(jié)點少的情況下,性能尚能接受,但是在節(jié)點數(shù)量龐大的情況下,zookeeper為了保證強一致性會導致很多的資源消耗,導致可用性嚴重降低。
  • AP without C
    在某些業(yè)務場景下,為了高可用性,則需放棄一致性。一旦分區(qū)發(fā)生錯誤,節(jié)點之間會失去聯(lián)系,為了不影響服務的響應時間,節(jié)點使用本地數(shù)據(jù)服務,這樣會導致各節(jié)點數(shù)據(jù)不一致。
    例如:eureka,與zookeeper思路相反,為了保證高可用,放棄一致性。

與CAP理論相似或者相關的還有ACID和BASE理論。

ACID:

  • Atomicity原子性:一個事務中所有操作都必須全部完成,要么全部不完成。
  • Consistency一致性. 在事務開始或結束時,數(shù)據(jù)庫應該在一致狀態(tài)。
  • Isolation隔離層. 事務將假定只有它自己在操作數(shù)據(jù)庫,彼此不知曉。
  • Durability持久性:一旦事務完成,就不能返回。
    這個理論主要運用在了關系型數(shù)據(jù)庫,但是分區(qū)復雜度高。

BASE

BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個短語的縮寫。BASE理論是對CAP中一致性和可用性權衡的結果,其來源于對大規(guī)?;ヂ?lián)網(wǎng)系統(tǒng)分布式實踐的總結, 是基于CAP定理逐步演化而來的。該理論允許一段時間內(nèi)的狀態(tài)不一致,比如在某app上購物,發(fā)起第三方支付,用戶支付狀態(tài)不可能立即同步到數(shù)據(jù)庫。如果支付成功,第三方會調(diào)用回調(diào)接口或者app主動查詢來完成狀態(tài)一致,這就是一個典型的最終一致的場景。雖然有短暫的數(shù)據(jù)不一致,但是大多數(shù)系統(tǒng)下,完成這個數(shù)據(jù)一致校正是非常快的,使用戶察覺不到這個過程。

總結:在結合業(yè)務的情況下,設計人員總會再CAP中做出些角色,取其二以滿足業(yè)務系統(tǒng)的需求。

ps: 如有錯誤,或者理解不到位的地方,歡迎大家對我指摘。謝謝。

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

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

  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,311評論 2 89
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,983評論 0 9
  • CAP理論斷言任何基于網(wǎng)絡的數(shù)據(jù)共享系統(tǒng),最多只能滿足數(shù)據(jù)一致性、可用性、分區(qū)容忍性三要素中的兩個要素。但是通過顯...
    他山之石頭閱讀 1,448評論 1 4
  • 在時間拽著你緬懷過去之前,學著欣賞現(xiàn)在所擁有的。真正懂得生活的人,絕不會拿往昔來填充現(xiàn)在。無論過去發(fā)生過什么,你要...
    拾京閱讀 226評論 0 0
  • 一. git 概述 1. git 簡介? 什么是git? > git是一款開源的分布式版本控制工具 > 在世界上所...
    王風云閱讀 420評論 0 3

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