架构师训练营 W6 作业
請簡述 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。虽不是正确的值,但却是合理的值(不是错误,只是非最新值)
评论