本文共 564 字,大约阅读时间需要 1 分钟。
C: Consistent 数据一致性
A: Availability 集群可用性
P: Network Partition 允许网络分区故障
CAP同时只能保证两个,而且实际中P是必须满足的,因为我们做不到分布式系统节点之间网络永远不出故障,所以实际的分布式系统一般是满足CP或者CA两个。
比如以一个分布式数据库系统为例,有三个节点保存同样的数据。一个客户端连到第一个节点,插入一条数据,由于网络故障,这条数据只同步到第二个数据库节点,第三个节点由于网络故障没有同步成功。这时,如果我们的系统如果满足CP,那这时客户端在第一个节点的插入数据操作就失败,因为数据库节点之间同步失败,这样就满足的数据一致性,但是为什么说满足了一致性,就不能满足可用性呢?因为这个数据最终没有提交成功,所以这个数据不可用,所以不满足可用性。但是之前已经在三个节点同步成功的数据对客户端还是可用的。所以Availability可用性具体指的是新提交的数据在集群上的可用性。
而对于满足AP的系统,就允许集群节点之间的数据不一致性,但是保证了集群的可用性。
分布式系统中实现一致性的raft 算法、paxos。关于raft算法如何实现数据一致性,可以参考下边连接的动画演示。
http://thesecretlivesofdata.com/raft/转载地址:http://lkcqi.baihongyu.com/