架构师训练营第五周”技术选型二“作业
作业二选一,时间关系只做第一题
Q:请简述 CAP 原理
什么是 CAP
C:Consistency,一致性,每次读取应该获取最新的数据,而不是过期数据,数据保持一致
A:Availability,可用性,每次请求都要有相应,这个响应不需要保证一定是最新的数据,但不能是错误或者失去响应
P:Partition tolerance,分区耐受性,网络获取其它原因,部分服务器失效,整个系统依然是可操作的
为什么 CAP 不能同时满足
对于分布式系统而言,故障一定会发生,分区耐受性必须保证。
当网络分区失效发生时,要么取消操作,保证一致性,但系统不可用。如果要继续写入数据,保证系统可用,则一致性无法保证。
如果一致性、可用性同时保证,需要写入时所有服务器同时生效,在分布式系统故障时这是不可能的。
因此,对于一个分布式系统,可用性、一致性只能二选一。
最终一致性
分布式系统不能同时保证可用性、一致性,因此退而求其次,保证最终一致性。最终一致性之前,可以忍受短时的不一致。
写冲突处理方案
根据时间戳,保证最后写入的数据
客户端冲突解决,将解决冲突的逻辑放到客户端
投票解决冲突,多数节点同时成功才算成功
评论