CAP 理論中的 C 和 A
- C 和 A 都是服務(wù)端對客戶端讀的不同承諾运嗜;A 承諾什么時候讀都能讀到數(shù)據(jù)歼秽,但是讀到的數(shù)據(jù)有可能不是最新的眯娱;C 承諾的是每次讀到的數(shù)據(jù)都是最新寫入的值航揉,要么就是讀取失斊忠摹惰爬;
- 這里的 C 不是狀態(tài)一致性喊暖,狀態(tài)一致性是說,在客戶端讀的那一個時刻撕瞧,數(shù)據(jù)在不同副本之間的值是一模一樣的陵叽;
- CAP 理論在提出的時候,C 指的是狀態(tài)一致性丛版,此時理論還沒被證明巩掺;
- CAP 理論在被證明的時候,將 C 限制在了原子一致性(線性一致性)页畦,這樣的限制換句話說胖替,就是對客戶端的承諾;我只承諾返回給客戶端讀請求的數(shù)據(jù)要么是最新寫入的數(shù)據(jù)豫缨,要么返回失敹懒睢;比如 Kafka 的 ISR好芭,讀寫都在 Leader 上燃箭,響應(yīng)給客戶端讀請求的數(shù)據(jù)要么就是最新的,要么就是返回失敗舍败,客戶端在讀的那一瞬間招狸,數(shù)據(jù)可能還沒同步給所有的 Follower 節(jié)點;
- 即使在沒有發(fā)生網(wǎng)絡(luò)分區(qū)的情況下邻薯,對 C 實現(xiàn)的越好瓢颅,對 A 的實現(xiàn)就越差;C 實現(xiàn)到頭了就是狀態(tài)一致性(分布式事務(wù) ACID)弛说,這是 CAP 理論被提出時 C 的含義挽懦;