基础概念
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、《深入分布式缓存从原理到实践》