极客时间 - 架构师培训 - 6 期作业
问:请简述 CAP 原理
答:
分布式系统(尤其是分布式存储系统)的C(一致性)A(可用性)和P(分区耐受性)不可能同时满足。
一致性:每次读取的数据是最近写入的或者返回一个错误,而不是过期数据;简言之,要么返回错误,要么就是对的数据。
可用性:每次读取都应该返回一个数据,可以不是最新的,但不能返回错误;简言之,要么返回最新的,要么返回旧的,但不是返回错误。
分区耐受性:即使因为网络原因,部分服务器节点之间消息丢失或者延迟,系统依然应该是可用的。
解释:对于一个分布式系统来说,网络失效是一定会存在的,也就是说当分区耐受性必须保证时,那么在可用性和一致性之间必须二选一。当网络分区失效,如果选了一致性,那么系统就可能返回错误,即系统不可用;当选了可用性,那么系统就一不定会返回最新的数据,即系统不一致。
CAP更准确的说法是:在分布式系统必须满足分区耐受性时,可用性和一致性不能同时满足
解决方案
BASE理论
既然数据一致性(Consistency)和系统可用性(Availability)不能够同时满足,做到数据的强一致性(Strong Consistency),那么就需要一种权衡方案,所以这时候BASE理论就诞生了。
BASE理论是基于对大规模互联网系统分布式实践的实践总结,基于 CAP 定理逐步演化而来的。每个应用都可以根据自身的业务特点,采用适当的方式使系统达到最终一致性(Eventual consistency)。
基本可用(Basically Available)假设系统出现了故障,但是还可以提供服务
软状态(Soft State) 软状态是相对硬状态而言的,硬状态是指系统中各节点上的数据都是一致的,而软状态则允许系统中的数据存在中间状态,而这些中间状态并不影响系统的整体可用性,也就是说在分布式系统中多个节点的数据允许存在数据延迟。
最终一致性(Eventually Consistent)最终一致性是指系统能够保证数据在没有新的更新操作的情况下,数据最终一定能够达到一致的状态。对于数据的软状态来说,不能一直都处于软状态,必须有个时间限制,即在时限到达后,各节点的数据应该能够保持数据的一致性。而这个时限与网络延迟、系统负载、数据复制方案设计等因素有关。
最终一致性主要策略分为以下3种情况:
根据时间戳,最后写入覆盖
客户端决定,业务选择,比如购物车合并
投票解决,比如三个节点中两个同意则认为同意
评论