先把每个拆分得概念理解清楚,然后依赖一些生活场景加以联想,就好理解了
C(Consistency) 一致性:保证同一时间访问所有节点的数据都是一致的
A (Availability)可用性:在系统中一部分节点故障后,系统是否还能响应客户端的读写请求。
P (Partition tolerance)分区容错:系统不能在时限内达成数据一致性,就是发生了分区(以上是 Wiki 的解释)。由于计算机中没有百分百可靠的通信协议(通信原理、计算机网络的内容),所以系统内肯定会存在部分节点在时限内无法通信,而造成数据不一致的问题。所以 P 是肯定是满足的。
假设分布式系统中,由于 P 的客观存在,一个节点挂了(短时间内无法和系统内其他节点同步数据),而其他节点数据有更新。要满足一致性,必须等其他数据必须要同步数据到该节点,才允许客户端访问。要是满足可用性,系统在向客户端提供服务的时候,已经无法保证系统内的数据一致了。
综上,分布式系统 CAP 最多只能满足两个条件,其中 P 是必须有的,无法同时满足 CAP。
剩下有种情况 CA 也是讨论很多的,既然排除了 P,那系统需在时限内保证数据一致,那单体架构,单节点是最趋近于这种情况的了。那还要保证一致性,单节点就一份数据,完全一致。而可用性,要么继续服务,要么整个挂,至于单体架构是否高可用,就看你怎么界定了。
对分布式CAP理论的理解
最新推荐文章于 2024-05-21 10:12:31 发布