写点什么

架构师训练营 W6 作业

用户头像
telliex
关注
发布于: 2020 年 07 月 15 日

請簡述 CAP 原理

CAP,在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。

一致性(Consistence)

client 读操作能够获取最新的写结果,因为事务在执行过程中,client 是无法读取到未提交的数据的,只有等到事务提交后,client 才能读取到事务写入的数据,而如果事务失败则会进行回滚,client 也不会读取到事务中间写入的数据。确保数据是一致的。

可用性(Availability)

请求结果不能超时、不能出错,且结果是合理的。

分区容忍性(Partition Tolerance)

网络发生了分区现象,可能是丢包,也可能是连接中断,还可能是拥塞,不管什么原因,系统要能继续依职责运作

说明

分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。

以 N1->Y (同步)==> N2->X,C 访问 N2 为例 

CP - Consistency/Partition Tolerance 

N1 节点上的数据已经更新到 Y,N1 和 N2 之间的复制通道中断,数据 Y 无法同步到 N2,N2 节点上的数据还是 X。这时客户端 C 访问 N2 时,N2 需要返回 Error,提示客户端 C ,系统现在发生了错误

AP - Availability/Partition Tolerance 

当发生分区现象后,N1 节点上的数据已经更新到 Y,但由于 N1 和 N2 之间的复制通道中断,数据 y 无法同步到 N2,N2 节点上的数据还是 X。所以 C 读到的不是最新写入的 Y。虽不是正确的值,但却是合理的值(不是错误,只是非最新值)



用户头像

telliex

关注

还未添加个人签名 2018.03.26 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 W6 作业