cap就是說一致性(consistency)
可用性(Availability)
分區(qū)容錯性(Partition Tolerant)
分布式服務(wù)只能滿足其2碾盟。
cap理論最開始在2000年的一次演講被提出,可以百度“Towards Robust Distributed Systems”
2年后一篇名為Brewer’s ...........Services的論文證明了cap理論颓鲜。如圖
圖片發(fā)自簡書App
舉個例子望艺,zk集群相艇,對zk的寫操作偶妖,一定要所有節(jié)點都成功了姜凄,才算成功。(主從同步)如果主掛了趾访,zk集群要重新選主态秧,期間是不對外服務(wù)的。所以zk是cp模型扼鞋,犧牲了可用性申鱼。這也是現(xiàn)在大廠不愿意用zk的原因之一愤诱。
redis集群,假設(shè)是主從結(jié)構(gòu)捐友,主掛了淫半,假設(shè)主還沒有來得及同步到從,數(shù)據(jù)就丟了楚殿。期間redis仍然可用撮慨,只是數(shù)據(jù)丟了竿痰,保證了可用性脆粥,犧牲了一致性。所以redis是ap模型影涉。
我們要根據(jù)業(yè)務(wù)來選擇我們需要的模型变隔,比如分布式鎖,就不適合用redis蟹倾,因為鎖萬一丟了匣缘,就容易被獲取多次,造成嚴(yán)重bug鲜棠。萬一是轉(zhuǎn)賬1個億肌厨,結(jié)果因為鎖沒鎖住,導(dǎo)致轉(zhuǎn)了2次豁陆,那公司就可能破產(chǎn)了柑爸。