分散式系統CAP的原理介紹
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”,即分散式系統在遇到某節點或網路分割槽故障的時候,仍然能夠對外提供滿足一致性
和可用性的服務。
分割槽容錯性和擴充套件性緊密相關。在分散式應用中,可能因為一些分散式的原因導致系統無法正常運轉。好的分割槽容錯性要求能夠使應用雖然是一個分散式系統,而看上去卻好像是在一個可以運轉正常的整體。比如
現在的分散式系統中有某一個或者幾個機器宕掉了,其他剩下的機器還能夠正常運轉滿足系統需求,或者是機器之間有網路異常,將分散式系統分隔未獨立的幾個部分,各個部分還能維持分散式系統的運作,這樣
就具有好的分割槽容錯性。
一致性(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式系統的 CAP 理論分散式
- 分散式系統CAP定理教程分散式
- 分散式系統:CAP 理論的前世今生分散式
- 分散式系統理論基礎 - CAP分散式
- 【分散式跟蹤系統Zipkin 介紹】分散式
- 分散式系統中的CAP、ACID、BASE概念分散式
- 分散式系統理論基礎2 :CAP分散式
- 分散式系統之CAP理論雜記分散式
- 分散式系統設計權衡之 CAP分散式
- 分散式系統設計權衡之CAP分散式
- 分散式系統1:什麼是分散式系統——簡要的介紹與定義分散式
- 4 在分散式資料庫中CAP原理CAP+BASE分散式資料庫
- FASTDFS開源分散式檔案系統介紹AST分散式
- 分散式日誌傳輸系統Databus(一)--系統介紹分散式
- GIT 分散式版本控制系統的簡單使用介紹Git分散式
- JAVA 分散式 - 分散式介紹Java分散式
- Linux下分散式系統以及CAP理論分析Linux分散式
- 分散式系統知識分享:正確理解CAP定理分散式
- CAP定理在分散式系統設計中的最新應用分散式
- Java分散式系統設計:CAP定理與BASE理論Java分散式
- 分散式事務--CAP分散式
- DAPP系統的原理與介紹APP
- Ceph分散式儲存-原理介紹及簡單部署分散式
- 分散式之系統底層原理分散式
- 分散式事務介紹分散式
- 看完這篇,保證讓你真正明白:分散式系統的CAP理論、CAP如何三選二分散式
- 分散式系統原理---CBCAST演算法分散式AST演算法
- 分散式理論(一) - CAP定理分散式
- 分散式賬本基本介紹分散式
- KAFKA介紹(分散式架構)Kafka分散式架構
- 分散式跟蹤系統zipkin簡介分散式
- 分散式系統2:分散式系統中的時鐘分散式
- 分散式 - 分散式系統的特點分散式
- 【分散式】CAP理論及其應用分散式
- 分散式設計理論之CAP分散式
- HazelCast分散式Map介紹和分析AST分散式
- FastDFS分散式儲存原理簡介AST分散式
- 分散式系統原理--日誌技術Redo Log分散式