- 相關(guān)推薦
系統架構師知識:什么是CAP
CAP、BASE理論是當前在互聯(lián)網(wǎng)領(lǐng)域非常流行的NoSQL的理論基礎。那么什么是CAP呢?我們一起來(lái)了解一下!
1、什么是CAP
著(zhù)名的CAP理論是由Brewer提出的,所謂CAP,即一致性(Consistency)、可用性(Availability)和分區容錯性(Partition Tolerance)。
(1)、Consistency(一致性):更新操作成功并返回客戶(hù)端完成后,分布式的所有節點(diǎn)在同一時(shí)間的數據完全一致(All nodes see the same data at the same time)。
這里的一致性,一定要和傳統的RDBMS中的事務(wù)一致性區分開(kāi)。
在傳統的RDBMS中,事務(wù)具有ACID4個(gè)屬性,即原子性(Atomicity),一致性(Consistency),隔離性(Isolation)和持久性(Durable)。
ACID是關(guān)系型數據庫的最基本原則,遵循ACID原則強調一致性,對成本要求很高,對性能影響很大。
a、原子性(Atomicity):事務(wù)是一個(gè)原子操作單元,其對數據的修改,要么全都執行,要么全都不執行。
b、一致性(Consistency):在事務(wù)開(kāi)始和完成時(shí),數據都必須保持一致?tīng)顟B(tài)。這意味著(zhù)所有相關(guān)的數據規則都必須應用于事務(wù)的修改,以保持數據的完整性;事務(wù)結束時(shí),所有的內部數據結構(如B樹(shù)索引或雙向鏈表)也都必須是正確的。
c、隔離性(Isolation):數據庫系統提供一定的隔離機制,保證事務(wù)在不受外部并發(fā)操作影響的“獨立”環(huán)境執行。這意味著(zhù)事務(wù)處理過(guò)程中的中間狀態(tài)對外部是不可見(jiàn)的,反之亦然。
d、持久性(Durability):事務(wù)完成之后,它對于數據的修改是永久性的,即使出現系統故障也能夠保持。
MIT的Gilbert和Lynch在證明CAP的過(guò)程中改變了Consistency的概念,也就是將Consistency轉化為Atomic。Gilbert認為這里所說(shuō)的Consistency其實(shí)就是數據庫系統中提到的ACID的另一種表述:一個(gè)用戶(hù)請求要么成功、要么失敗,不能處于中間狀態(tài)(Atomic);一旦一個(gè)事務(wù)完成,將來(lái)的所有事務(wù)都必須基于這個(gè)完成后的狀態(tài)(Consistent);未完成的事務(wù)不會(huì )互相影響(Isolated);一旦一個(gè)事務(wù)完成,就是持久的(Durable)。
(2)、Availability(可用性):讀和寫(xiě)操作都能成功(Reads and writes always succeed)。
可用性是說(shuō)服務(wù)能一直保證是可用的狀態(tài),當用戶(hù)發(fā)出一個(gè)請求,服務(wù)能在有限時(shí)間內返回結果,所有的請求都能“成功”拿到對應的響應。
(3)、Partition Tolerance(分區容錯性):在出現網(wǎng)絡(luò )故障導致分布式節點(diǎn)間不能通信時(shí),系統能否繼續服務(wù)(The system continues to operate despite arbitrary message loss or failure of part of the system)。
直觀(guān)感受就是系統中節點(diǎn)crash或者網(wǎng)絡(luò )分片都不應該導致一個(gè)分布式系統停止服務(wù)。
2、如何證明CAP?
CAP的證明很簡(jiǎn)單:
假設兩個(gè)節點(diǎn)集{G1, G2},由于網(wǎng)絡(luò )分片導致G1和G2之間所有的通訊都斷開(kāi)了。
如果在G1中寫(xiě),在G2中讀剛寫(xiě)的數據, G2中返回的值不可能是剛剛在G1中的寫(xiě)值。
對于分布式數據系統而言,分區容錯性(Partition Tolerance)是基本要求,否則就不稱(chēng)其為分布式系統。
由于可用性(Availability)的要求,G2一定要返回這次讀請求,因為分區容錯性(Partition Tolerance)的存在,導致一致性(Consistency)一定是不可滿(mǎn)足的。
CAP理論告訴我們,一個(gè)分布式系統不可能同時(shí)滿(mǎn)足一致性,可用性和分區容錯性這三個(gè)需求,三個(gè)要素中最多只能同時(shí)滿(mǎn)足兩點(diǎn)。
顯然,任何橫向擴展策略都要依賴(lài)于數據分區,軟件架構通常必須在一致性(Consistency)與可用性(Availability)之間做出選擇。
3、CAP的延伸BASE
BASE是Basically Available、Soft state、Eventually consistent三個(gè)詞組的簡(jiǎn)寫(xiě),是對CAP中C 和A的延伸。
(1)Basically Available:基本可用,即數據一致性能夠基本滿(mǎn)足二八定律,即至少保證80%一致性,剩下20%就不要過(guò)于糾結。
(2)Soft-state:軟狀態(tài)/柔性事務(wù),即狀態(tài)可以有一段時(shí)間的不同步。
在不過(guò)分追求數據一致性(強一致性)前提下可考慮軟狀態(tài)策略,例如把數據(State)緩存在客戶(hù)端一段時(shí)間,在一段時(shí)間過(guò)后,如果客戶(hù)端沒(méi)有再次刷新?tīng)顟B(tài)的請求的話(huà),就清除此緩存(Soft),這個(gè)狀態(tài)就會(huì )消失。
(3)Eventual consistency:最終一致性,即在某一段短時(shí)間內允許數據不一致,但經(jīng)過(guò)一段較長(cháng)時(shí)間(這里的一段時(shí)間多數是業(yè)務(wù)能夠容忍的延遲),等所有節點(diǎn)上數據的拷貝都整合在一起的時(shí)候,數據會(huì )最終達到完全一致。我用自己的經(jīng)驗和親身實(shí)踐證明,最終一致性貫穿著(zhù)互聯(lián)網(wǎng)尤其是電子商務(wù)類(lèi)型的主要應用的生命周期。
BASE來(lái)自于互聯(lián)網(wǎng)的電子商務(wù)領(lǐng)域的實(shí)踐,它是基于CAP理論逐步演化而來(lái),核心思想是即便不能達到強一致性(Strong Consistency),但可以根據應用特點(diǎn)采用適當的方式來(lái)達到最終一致性(Eventual consistency)的效果。BASE是反ACID的,它完全不同于A(yíng)CID模型,犧牲強一致性,獲得基本可用性和柔性可靠性并要求達到最終一致性。
【系統架構師知識:什么是CAP】相關(guān)文章:
什么是系統架構師-如何成為系統架構師08-10
2017系統架構師知識整理08-28
系統架構師的知識和職責10-27
系統架構師知識:高可用系統設計09-19
系統架構師知識:負載均衡08-18
系統架構師是做什么的05-24
系統架構師要什么條件09-12
系統架構師性能知識整理10-28
系統架構師是干什么的08-23
系統架構師的崗位職責是什么07-08