在單機中,數據庫很容易知足ACID特性的事務,可是在分佈式數據庫中,ACID的分佈式就很難知足了。因此CAP、BASE這樣的分佈式理論,就誕生了。
CAP理論:一致性(C:Consistency),可用性(A: Availability)和分區容錯性(P:Partition tolerance),最多隻能知足其中的兩個。sql
咱們看看兩個Mysql數據庫同步的例子:
C保證了兩個MySQL數據庫數據的一致性,當master數據有更新,slave數據也必須更新。
A保證了master數據庫和slave數據庫都是可用的。
P保證了master數據庫和slave數據庫出現網絡分區時,對外都是可用的。
因爲是分佈式系統,咱們的節點都是在不一樣的網絡中,確定會出現網絡分區,因此P是咱們必需要知足的。若是不想知足,那又回到單機了。
如今的場景是這樣的,master和slave出現了網絡分區,致使數據同步不了,這樣兩邊的數據就不同了,破壞了一致性C。若是咱們想要保證C,那隻能停到master,不讓寫數據,這個時候,又破壞了可用性A。數據庫