CAP裏面的CP和AP

一、爲什麼分佈式系統要麼是CP要麼是AP呢?

1、分佈式系統:分佈式系統是一個硬件或軟件組件分佈在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。

2、從分佈式系統的定義可知,分佈式是建立在網絡之上的,既然有網絡,那麼肯定會存在網絡出現問題的情況,那意味着我們在設計分佈式系統的時候,必須要考慮的一個點就是:如果網絡出現了問題,那麼我們的系統應該怎麼做。

3、分區:

一個分佈式系統裏面數據存儲在各個節點裏面,節點組成的網絡正常情況下都是連通的。如果因爲一些故障導致有些節點之間無法連通,則整個網絡就分成了幾個區域,這些不連通的區域就是分區。

4、當我們的數據只在系統中某一個節點中保存,那麼當分區出現後,那麼這個不連通的節點上面保存的數據就無法被用戶訪問了,這叫做分區無容錯性,給用戶的直觀感覺就是數據丟了或者數據無法寫入了,這要比看到不是最新的數據要嚴重的多。

5、那麼提高分區容忍性的辦法就是同時存在多個節點保存同一份數據,這樣當分區出現之後,這一份數據項就可能在多個分區裏面存在,容錯性就提高了。

6、如果要把數據複製到多個節點,帶來的問題就是一致性,就是多個節點上面的數據可能是不一致的。要保證一致,每次寫操作就都要等待全部節點寫成功,而這等待又會帶來可用性的問題,也即一段時間內,系統是不可讀的。

二、CAP的解釋:

1、一致性(Consistency):(等同於所有節點訪問同一份最新的數據副本)

2、可用性(Availability):(每次請求都能獲取到非錯的響應——但是不保證獲取的數據爲最新數據)

3、分區容錯性(Partition tolerance):(以實際效果而言,分區相當於對通信的時限要求。系統如果不能在時限內達成數據一致性,就意味着發生了分區的情況,必須就當前操作在C和A之間做出選擇,保證分佈式網絡中部分網絡不可用時, 系統依然正常對外提供服務。

三、分佈式與集羣
1、分佈式(distributed)是指在多臺不同的服務器中部署不同的服務模塊,通過遠程調用協同工作,對外提供服務。
2、集羣(cluster)是指在多臺不同的服務器中部署相同應用或服務模塊,構成一個集羣,通過負載均衡設備對外提供服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章