CAP 是分佈式數據庫中的重要理論之一。爲了更好的理解分佈式數據庫,咱們須要對 CAP 理論有個簡單的理解。數據庫
CAP 證實了,對於一個分佈式數據庫系統,存在這樣三個指標:服務器
原子
的,當寫操做完成後,全部後續的讀取操做獲取獲得的都必須是新值),而你只能在這三個指標中同時照顧好兩個。網絡
根據 CAP 理論,當你在設計/使用分佈式數據庫時,你須要作出選擇:在 Consistent, Available, Partition tolerant 中放棄什麼。架構
Partition tolerant 是個架構選擇(數據庫是不是分佈式),因此通常而言,你須要選擇是更在乎 Consistent 仍是 Available。分佈式
理解 CAP 理論對於作出正確的選擇是相當重要的。設計
爲了更好地理解 CAP,這裏以現實生活中的例子作個類比code
假設這個世界是一個巨大的分佈式系統,關於暴走漫畫的知識是系統中存儲的數據,暴漫的粉絲是這個分佈式系統中的一個個節點。事件
假設今天你剛剛看了最新一期暴走大事件(第三季43集),而今天的日期是 2015年4月18日
,忽然有一夥兒神祕人闖進你家門,把你抓到了深山裏,讓你參與建造方舟,而且與世隔絕。it
時光如梭,一轉眼 5 年過去了,到了 2020年1月2日
。方舟建成,你被送回了家鄉。在回家的路上,你遇到一個路人,問了你一個問題:io
暴走大事件最新一期是第幾季第幾集了?
這時候,你須要作一個選擇:
你能夠回答你知道的最新一期(第三季43集,5年前的最新一期)。若是你選擇回答,那你就是 Available
的。或者你能夠選擇不回答,由於你已經與世隔絕了 5 年,你知道你的答案極可能和世界上其他暴漫粉絲的答案不一致(Consistent
),這樣這個路人得不到答案,可是整個世界是 Consistent
的。
即:你能夠選擇確保路人能獲得答案(Available),或者確保世界的一致性(Consistent)。