原博地址: https://blog.csdn.net/zhangyufeijiangxi/article/details/78286364
網絡摘抄理解:
一致性:讀操作總是能讀取到之前完成的寫操作結果,滿足這個條件的系統稱為強一致系統,這里的“之前”一般對同一個客戶端而言;
可用性:讀寫操作在單台機器發生故障的情況下仍然能夠正常執行,而不需要等待發生故障的機器重啟或者其上的服務遷移到其他機器;
分區可容忍性:機器故障、網絡故障、機房停電等異常情況下仍然能夠滿足一致性和可用性。
自己的理解:
一致性:
如下圖1中所示,Client A負責更新數據,為了保證Server 1和Server 2上的數據是一致的,Client A會將X=1的寫操作同時發給Server 1和Server 2,但是當Client A和Server 2之間發生網絡分區(網絡無法連接)時,此時如果讓write X=1的寫操作在Server 1上成功,那Client B和Client C將從Server 1和Server 2上讀取到不一致的X值;此時如果要保持X值的一致性,那么write X=1的寫操作在Server 1和Server 2上都必須失敗,這就是著名的CAP理論:在容忍網絡分區的前提下,要么犧牲數據的一致性,要么犧牲寫操作的可用性。
解決這個問題你可能會想到讓Client C同時讀取Server 1和Server 2上的X值和版本信息,然后取Server 1和Server 2最新版本的X值, 如下圖2所示。但Client C和Server 1之間也可能發生網絡分區,這本質上是犧牲讀可用性換取寫可用性,並沒有突破CAP理論。
可用性:讀寫操作在單台服務器出問題后,在其他服務器上依然能夠完成讀寫操作
重點在於:某個讀寫操作在出問題的機器上不能讀寫了,但是在其他機器可以完成
分區容錯性:單台服務器,或多台服務器出問題(主要是網絡問題)后,正常服務的服務器依然能正常提供服務,並且滿足設計好的一致性和可用性
重點在於:部分服務器因網絡問題,業務依然能夠繼續運行