架构师训练营 1 期 -- 第六周作业
请简述 CAP 原理。
答:CAP定理是只,在一个分布式系统中,对于数据的读写操作,只能同时满足一致性Consistence, 可用性Availability和分区容错性Partition Tolerance中的两个。
一致性是指,对于客户端来说,每次都能读取到最新的结果,不会读取到过期的数据。
可用性是指,对每一个用户请求,总能得到一个返回结果,这个结果可能是空,或者是一个正确的值,或者是一个过期的值,但是不会不返回或者其它结果如超时错误。
分区容错性是指,当出现网络故障后,系统可以继续提供服务。
因为分布式系统肯定是部署在不同机器上的,网络故障也必定存在,所以分布式系统只能同时满足CP或者AP。
比如数据库的主从复制,当出现网络故障后,主服务器(写服务器)无法将数据复制到从服务器(读服务器),那么客户从读服务器读到的数据就不是最新的数据,满足了可用性,却无法满足一致性,所以此时满足的是AP。
如果我们的数据要写两份,同时写到Node1和Node2,只有两个节点数据都写入成功时,才算写入成功,这样两个节点的数据是一致的。当Node2不可访问时,那么写入Node2就会失败,也就意味着我们的数据写入失败,此时系统是不可用的。在这个场景中,我们保证了一致性,但是系统变得不可用,满足CP。
关于CAP定理的理解,需要注意以下事项:
CAP关注的是数据,不是整个系统。这就告诉我们,在一个系统中,可以对数据进行分类,有些数据需要满足CP,有些数据需要满足AP。比如商品系统中,商品价格可以满足CP,商品评价可以满足AP。
CAP定理是说,当发生网络分区时,只能选择CP和AP,但是在没有发生网络故障时,我们应该尽量同时满足CA。
在发生网络分区时,我们只能满足A或者C中的一种,但这并不意味着什么都不做。我们可以做些日志,网络分区恢复后系统回复做准备。比如满足AP的系统,在网络故障回复后,再同步数据,最终达到数据的一致。
针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)。
评论