CAP定理為什麼只能同時滿足兩個

weixin_34162629發表於2018-04-17
Consistency(一致性), 資料一致更新,所有資料變動都是同步的
Availability(可用性), 好的響應效能

Partition tolerance(分割槽容忍性) 可靠性

在網上看了很多資料,這裡給出自己的簡單理解

C:一致性,就是說所有的伺服器上面的資料都是一樣的,

A:可用性,使用者訪問伺服器上面的資料,響應時間在可以接受的範圍內

P:分割槽容忍性,其實就是高可用性,一個節點崩了,並不影響我們其它的節點

現在開始分析:

1:滿足C,所有的機器上的資料都是一樣,這樣的情況下會有什麼需求呢?每當一個新資料新增到其中一個伺服器上,這個資料要同步到其它伺服器,這樣的情況下才可以保證C

2:滿足A,這樣的情況下會有什麼需求呢?使用者隨時都在訪問,都能在可控的時間內返回正確的資料

3:滿足P,非常可靠,怎麼能可靠呢?那必須是機器越多越可靠,為啥?我有1億臺伺服器,掛了幾萬臺,完全沒影響嘛。

現在我們對這幾個理論有了一定的瞭解,現在開始分析為啥只能同時滿足兩個

1:滿足C和A,那麼P能不能滿足呢?

滿足C需要所有的伺服器的資料要一樣,也就是說要實現資料的同步,那麼同步要不要時間?肯定是要的,並且機器越多,同步的時間肯定越慢,這裡問題就來了,我們同時也滿足了A,也就是說,我要同步時間短才行。這樣的話,機器就不能太多了,也就是說P是滿足不了的

2:滿足C和P,那麼A能不能滿足呢?

滿足P需要很多伺服器,假設有1000臺伺服器,同時滿足了C,也就是說要保證每臺機器的資料都一樣,那麼同步的時間可就很大,在這種情況下,我們肯定是不能保證使用者隨時訪問每臺伺服器獲取到的資料都是最新的,想要獲取最新的,可以,你就等吧,等全部同步完了,你就可以獲取到了,但是我們的A要求短時間就可以拿到想要的資料啊,這不就是矛盾了,所以說這裡A是滿足不了了

3:滿足A和P,那麼C能不能滿足呢?

我認為不需要我說了,讀者可以自己分析下

相關文章