游戏直播网站怎么做的,wordpress插件设置,网站规划的步骤,自适应微网站开发CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中#xff1a; 一致性#xff08;Consistency#xff09;可用性#xff08;Availability#xff09;分区容错性#xff08;Partition tolerance#xff09;最多满足其中的两个特性。也就是下图所… CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中 一致性Consistency可用性Availability分区容错性Partition tolerance最多满足其中的两个特性。也就是下图所描述的。分布式系统要么满足CA,要么CP要么AP。无法同时满足CAP。 I. 什么是 一致性、可用性和分区容错性 分区容错性指的分布式系统中的某个节点或者网络分区出现了故障的时候整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。 事实上我们在设计分布式系统是都会考虑到bug,硬件网络等各种原因造成的故障所以即使部分节点或者网络出现故障我们要求整个系统还是要继续使用的 (不继续使用,相当于只有一个分区,那么也就没有后续的一致性和可用性了) 可用性 一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户角度来看就是不会出现系统操作失败或者访问超时等问题。 一致性在分布式系统完成某写操作后任何读操作都应该获取到该写操作写入的那个最新的值。相当于要求分布式系统中的各节点时时刻刻保持数据的一致性。 II. 该怎么理解 如果我们事先保证了分区容错性也意味着若某个节点故障了用户还是可以继续访问。这时用户在访问过程中就会出现一致性和可用性不能同时满足的情况参考下图 如图假设分布式系统有G1G2两个节点初始值都是v0。现在有一个client向系统写入了值v1这里假设直接写的是节点G1。写完之后client再去读取这个值这时读到了G2节点, 由于G2节点与G1节点失去连接这时G1节点上的数据还未同步到G2节点因此客户端读取到的是修改之前的值v0。 这就出现了不满足一致性的情况了。相当于满足了可用性失去了一致性。 类似的如果系统保证了强的一致性那么在client 写完G1节点后, 而G1向G2节点同步数据出现了问题这时如果client再去读取G2节点的数据时client就会一直处于等待状态因为系统内各节点 数据为同步上需要等同步上才能使用。这就相当于满足了一致性而失去了可用性。 考虑多个客户端访问时一致性和可用性还可以这么理解假如client1 向G1 修改某个值的时候, 写操作还未完成client2就发起来对该值的读操作读的是G2节点这时如果要满足一致性 那么就得让client2 暂时无法使用如果要让client2 使用那么获取到的数据不是最新的系统就不满足一致性。 III. CAP三者不可兼得该如何取舍 (1) CA: 优先保证一致性和可用性放弃分区容错。 这也意味着放弃系统的扩展性系统不再是分布式的有违设计的初衷。 (2) CP: 优先保证一致性和分区容错性放弃可用性。在数据一致性要求比较高的场合(譬如:zookeeper,Hbase) 是比较常见的做法一旦发生网络故障或者消息丢失就会牺牲用户体验等恢复之后用户才逐渐能访问。 (3) AP: 优先保证可用性和分区容错性放弃一致性。NoSQL中的Cassandra 就是这种架构。跟CP一样放弃一致性不是说一致性就不保证了而是逐渐的变得一致。 参考 https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/ 转载于:https://www.cnblogs.com/mingorun/p/11025538.html