理解 CAP 理論 - 分佈式數據庫相關理論 Part1

CAP 是分佈式數據庫中的重要理論之一。爲了更好的理解分佈式數據庫,咱們須要對 CAP 理論有個簡單的理解。數據庫

1.CAP 概述

CAP 證實了,對於一個分佈式數據庫系統,存在這樣三個指標:服務器

  • C_onsistent_(一致性。寫操做是 原子 的,當寫操做完成後,全部後續的讀取操做獲取獲得的都必須是新值),
  • A_vailable_(可用性。只要還有一個節點服務器在運行,整個系統對於請求老是要返回結果)
  • P_artition tolerant_(分區容忍性。當節點服務器之間的通訊中斷後,即:出現網絡分區,整個系統仍是能提供服務的)。

而你只能在這三個指標中同時照顧好兩個。網絡

根據 CAP 理論,當你在設計/使用分佈式數據庫時,你須要作出選擇:在 Consistent, Available, Partition tolerant 中放棄什麼。架構

Partition tolerant 是個架構選擇(數據庫是不是分佈式),因此通常而言,你須要選擇是更在乎 Consistent 仍是 Available。分佈式

理解 CAP 理論對於作出正確的選擇是相當重要的。設計

2.CAP 小故事

爲了更好地理解 CAP,這裏以現實生活中的例子作個類比code

假設這個世界是一個巨大的分佈式系統,關於暴走漫畫的知識是系統中存儲的數據,暴漫的粉絲是這個分佈式系統中的一個個節點。事件

假設今天你剛剛看了最新一期暴走大事件(第三季43集),而今天的日期是 2015年4月18日,忽然有一夥兒神祕人闖進你家門,把你抓到了深山裏,讓你參與建造方舟,而且與世隔絕。it

時光如梭,一轉眼 5 年過去了,到了 2020年1月2日。方舟建成,你被送回了家鄉。在回家的路上,你遇到一個路人,問了你一個問題:io

暴走大事件最新一期是第幾季第幾集了?

這時候,你須要作一個選擇:

你能夠回答你知道的最新一期(第三季43集,5年前的最新一期)。若是你選擇回答,那你就是 Available 的。或者你能夠選擇不回答,由於你已經與世隔絕了 5 年,你知道你的答案極可能和世界上其他暴漫粉絲的答案不一致(Consistent),這樣這個路人得不到答案,可是整個世界是 Consistent 的。

即:你能夠選擇確保路人能獲得答案(Available),或者確保世界的一致性(Consistent)。

相關文章
相關標籤/搜索