写点什么

训练营第六周作业

用户头像
大脸猫
关注
发布于: 2020 年 11 月 29 日

简述CAP原理



定义

CAP理论指的是一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。拿一个网上的图来看看。





Avaliablility:

在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

Partition tolerance:

以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

Consistency:

在分布式系统中的所有数据备份,在同一时刻是否同样的值。一致性被称为原子对象,任何的读写都应该看起来是“原子“的,或串行的。(等同于所有节点访问同一份最新的数据副本)

  • 强一致性

  • 弱一致性

  • 最终一致性



任何分布式系统只可同时满足二点,没法三者兼顾。这是CAP定理。



启示

不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。



取舍

(1) CA: 优先保证一致性和可用性,放弃分区容错。 这也意味着放弃系统的扩展性,系统不再是分布式的,有违设计的初衷。

(2) CP: 优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合(譬如:zookeeper,Hbase) 是比较常见的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等恢复之后用户才逐渐能访问。

(3) AP: 优先保证可用性和分区容错性,放弃一致性。NoSQL中的Cassandra 就是这种架构。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐的变得一致。



用户头像

大脸猫

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
训练营第六周作业