WEEK6- 作业 - 对 CAP 理解

用户头像
蒜泥精英
关注
发布于: 2020 年 07 月 15 日
WEEK6-作业-对CAP理解

CAP的各要素的理解

1. 数据一致性(Consistency):

对于服务端来说,所有节点在同一时刻的数据都相同;

对于客户端来说,读操作保证能够返回最新的数据。



但是实际:对于系统执行事务来说,在事务执行过程中,系统其实处于一个不一致的状态,不同节点的数据并不完全一致。



2. 系统可用性(Availability):

非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)



3. 分区容错性(Partition Tolerance):

出现消息丢失或分区错误时,系统能够继续运行,即当网络分区出现后,系统能够继续保持运行。



CAP 原理:

对于一个分布式系统而言,不能同时满足一致性、可用性和分区容错性三个设计的约束。放到分布式环境中,我们通常必须选择P(分区容忍)要素,因为网络无法保障100%可靠,有可能出故障,所以出现分区是必然的现象。



无法同时选择CA原因:

假设,如果我们选择CA而放弃P,当发生分区故障时候,为了保证C,系统就需要禁止写入,当有写入请求时,系统就会返回ERROR,这就和A冲突了,因为A需要 NO ERROR 或 NO TIMEOUT。

所以,在分布式系统理论上,我们只能选择CP 或 AP 架构,这个就需要根据具体的业务场景来定。



1、CP 架构:

如下图所示,为了保证一致性,当发生分区现象后,N1和N2的通道故障,N1 节点上的数据y不能写入N2,此时如果客户端C去访问N2,N2需要返回ERROR ,提示客户顿有错误,即牺牲了可用性A。



2、AP 架构:

如下图所示,为了保证可用性,当发生分区现象后,N1和N2的通道故障,N1 节点上的数据已更新到y,但是不能写入N2,N2上的数据还是x。 此时如果客户端C去访问N2,N2返回了x,而实际上最新的数据已经是y了。虽然不是最新的结果,但是也是一个合理的结果,此时牺牲了数据一致性C。





用户头像

蒜泥精英

关注

还未添加个人签名 2018.09.19 加入

还未添加个人简介

评论

发布
暂无评论
WEEK6-作业-对CAP理解