分散式系統CAP的原理介紹

chenfeng發表於2017-03-28
CAP原理中,有三個要素:
一致性(Consistency)
可用性(Availability)
分割槽容錯性(Partition tolerance)


Consistency 一致性
一致性指“all nodes see the same data at the same time”,即更新操作成功並返回客戶端完成後,所有節點在同一時間的資料完全一致。分散式的一致性
對於一致性,可以分為從客戶端和服務端兩個不同的視角。從客戶端來看,一致性主要指的是多併發訪問時更新過的資料如何獲取的問題。從服務端來看,則是更新如何複製分佈到整個系統,
以保證資料最終一致。一致性是因為有併發讀寫才有的問題,因此在理解一致性的問題時,一定要注意結合考慮併發讀寫的場景。
從客戶端角度,多程式併發訪問時,更新過的資料在不同程式如何獲取的不同策略,決定了不同的一致性。對於關係型資料庫,要求更新過的資料能被後續的訪問都能看到,這是強一致性。
如果能容忍後續的部分或者全部訪問不到,則是弱一致性。如果經過一段時間後要求能訪問到更新後的資料,則是最終一致性。

Availability 可用性
可用性指“Reads and writes always succeed”,即服務一直可用,而且是正常響應時間。
對於一個可用性的分散式系統,每一個非故障的節點必須對每一個請求作出響應。也就是,該系統使用的任何演算法必須最終終止。當同時要求分割槽容忍性時,這是一個很強的定義:即使是嚴重的網路錯誤,
每個請求必須終止。
好的可用性主要是指系統能夠很好的為使用者服務,不出現使用者操作失敗或者訪問超時等使用者體驗不好的情況。可用性通常情況下可用性和分散式資料冗餘,負載均衡等有著很大的關聯。


Partition Tolerance分割槽容錯性
分割槽容錯性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分散式系統在遇到某節點或網路分割槽故障的時候,仍然能夠對外提供滿足一致性
和可用性的服務。
分割槽容錯性和擴充套件性緊密相關。在分散式應用中,可能因為一些分散式的原因導致系統無法正常運轉。好的分割槽容錯性要求能夠使應用雖然是一個分散式系統,而看上去卻好像是在一個可以運轉正常的整體。比如
現在的分散式系統中有某一個或者幾個機器宕掉了,其他剩下的機器還能夠正常運轉滿足系統需求,或者是機器之間有網路異常,將分散式系統分隔未獨立的幾個部分,各個部分還能維持分散式系統的運作,這樣
就具有好的分割槽容錯性。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2136190/,如需轉載,請註明出處,否則將追究法律責任。

相關文章