一、CAP定理
分佈式系統(各系統互相聯繫且數據共享)中,只能最多知足一致性(Consistency),可用性(Availability)和分區容錯性(Partition tolerance)中的兩種。
一致性:是指客戶端的讀操做能夠拿到最新的寫操做的數據
可用性:是指請求在合理的時間內能夠返回合理的結果,而不是系統異常,報錯,超時等
分區容錯性:是指系統出現網絡分區後,還能夠履行職責。
二、CAP應用
首先P分區容錯性是必須的,爲何呢?
由於網絡自己就不可靠,不可能100%可靠。一個CA系統,當出現分區問題時,有服務器不能使用,此時有寫操做,可是不能進行服務器之間的同步,因此係統須要禁止寫入,此時會返回系統故障,這就違反了A 可用性,沒有返回合理的結果,因此在分佈式系統中不能選擇CA系統。
接下來CP和AP系統(N1,N2兩臺服務器)
一、cp
爲了保證一致性,當出現分區現象後,N1的數據已經更新到y,可是因爲N1和N2的複製通道關閉了。數據y沒法更新到N2,N2節點的數據仍是x。這時候客戶端訪問N2時,N2須要返回error(保持一致性,此時數據不一致,故返回error),不知足可用性。所以CAP三者只能知足CP
二、ap
當出現分區現象後,N1的數據已經更新到y,可是因爲N1和N2的複製通道關閉了。數據y沒法更新到N2,N2節點的數據仍是x。這時候客戶端訪問N2時,N2返回的是x,與N1的數據不一致,故沒法達到一致性。此時爲什麼n2不返回error呢,由於可用性是指返回合理的結果,x屬於合理的結果。
故綜上所述,在分佈式系統中只能選擇AP和CP系統