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能不能滿足呢?
我認為不需要我說了,讀者可以自己分析下