基礎概念
C 一致性
分布式系統中的所有數據備份,在同一個時刻是否有相同的值,即所有節點訪問的數據是同一個版本的最新副本,具有數據上的一致性;
A 可用性
分布式的集群節點如果一些節點故障后,集群整體還能繼續響應客戶端請求,整體具有高可用性;
P 分區容忍性
分布式系統網絡的不確定性導致,無法在一定時限內達成數據一致性,就意味著發生了分區的情況,就必須在C和A之間做出選擇;
分布式環境下P是要保證的,取舍就在C和A之間,不可能強一致性又高可用;
設計取舍
1、CA
放棄P保證CA的典型例子就是關系型數據庫、LDAP等,而分區是始終存在的,CA系統更多的是允許分區后各子系統依然保持CA;
2、CP
放棄A,相當于每個請求都要求在Server之間強一致,而P會導致同步時間的無限延長,如此可以保證CP,2PC,3PC等分布式事務都是基于這個模式,分布式鎖也是如此;
3、AP
放棄C,要求分區容忍并高可用,即節點間數據不一致性,但均可用,眾多的NoSQL都是屬于該模式;
參考:
1、《深入分布式緩存從原理到實踐》