CAP總結

C   :一致性(consistency)其實就是數據庫中的ACID數據庫

A   :可用性(availability)   對一個系統而言,全部的請求都應該在一段時間內‘成功’而且收到’返回’,其實就是不丟報文,老是能響應,可能有延遲。強調下,可用性是系統中每一個沒有問題的節點在接受請求的時候,可以正確響應。舉個例子:ca集羣下,若是出現分區,全部節點都沒法運轉,按照常規的「可用性」看的話,咱們認爲這種狀況是缺少「可用性的」,這裏的「可用性」跟cap中的a是有區別的。a是有前提的,即針對於正常運轉的節點網絡

P   :分區容錯(partiion-tolerance)所指就是分佈式系統的容錯性。節點crash或者網絡分片都不該該致使一個分佈式系統中止服務,放棄Partition-tolerance意味着把全部的機器搬到一臺機器內部。也就是單點跟多節點的問題,多節點具備容錯性,單點沒有分佈式

假設兩個節點集{G1, G2},因爲網絡分片致使G1和G2之間全部的通信都斷開了,若是在G1中寫,在G2中讀剛寫的數據, G2中返回的值不可能G1中的寫值。因爲A的要求,G2必定要返回此次讀請求,因爲P的存在,也便是多節點狀況下,其中一個節點的數據不是最新的,致使C必定是不可知足的。事務

·放棄P:若是想避免分區容錯性問題的發生,一種作法是將全部的數據(與事務相關的)都放到一臺機器上。雖然沒法100%地保證系統不會出錯,但不會碰到由分區帶來的負面效果。固然,這個選擇會嚴重影響系統的擴展性。單節點的典型表明就是關係型數據庫,支持CAit

·放棄A:相對於放棄「分區容錯性」來講,其反面就是放棄可用性。一旦遇到分區容錯故障,那麼受到影響的服務須要等待數據一致,所以在等待期間系統就沒法對外提供服務,也就是CP。若是不須要數據的強一致性,能夠當即進行響應,會致使數據的不一致,也就是APio

·放棄C:這裏所說的放棄一致性,並非徹底放棄數據的一致性,而是放棄數據的強一致性,而保留數據的最終一致性。在分佈式環境中,放棄強一致性,能夠當即進行響應,雖然數據會形成不一致。集羣

base原則其實放棄c,實現最終一致性的AP擴展

相關文章
相關標籤/搜索