04-27::CAP 理论与 BASE 理论
CAP 理论与 BASE 理论
什么是CAP理论
1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。
- Consistency(一致性)
- Availability(可用性)
- Partition tolerance(分区容错性)
Eric Brewer 说:这三个指标不可能同时满足,这个结论就叫做 CAP 定理。
-
分区容错性(Partition tolerance) :比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。介于分区状态下,G1 和 G2 是两台跨区的服务器,G1 向 G2 发送一条消息,G2 可能无法收到,因为网络总是不可靠的,因此可以认为P总是成立的。
-
Availability(可用性) :只要收到用户的请求,服务器就必须给出回应,但此时由于网络问题会导致服务器之间的数据无法做到实时同步,牺牲了一致性,此时满足AP。
-
Consistency(一致性) :用户A访问系统A,用户B访问系统B,系统A和系统B保持同步,当用户A对系统A的data做出更改后,用户B查询系统B的data时,需要查询出用户A操作后的数据,而同步是要通过网络,网络却又总是不可靠的,所以为确保用户B能查询出用户A修改的数据,必须在用户B查询前将系统A的data同步到系统B上,这样就牺牲了可用性,此时满足CP。
什么是 BASE 理论
由于CAP中一致性C和可用性A无法兼得,eBay的架构师,提出了BASE理论,它是通过牺牲数据的强一致性,来获得可用性。它有如下3种特征:
- Basically Available(基本可用):分布式系统在出现不可预知故障的时候,允许损失部分可用性,保证核心功能的可用。
- Soft State(软状态):软状态也称为弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
- Eventually consistent(最终一致性):最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
BASE理论并没有要求数据的强一致性,而是允许数据在一定的时间段内是不一致的,但在最终某个状态会达到一致。在生产环境中,很多公司,会采用BASE理论来实现数据的一致,因为产品的可用性相比强一致性来说,更加重要。比如在电商平台中,当用户对一个订单发起支付时,往往会调用第三方支付平台,比如支付宝支付或者微信支付,调用第三方成功后,第三方并不能及时通知我方系统,在第三方没有通知我方系统的这段时间内,我们给用户的订单状态显示支付中,等到第三方回调之后,我们再将状态改成已支付。虽然订单状态在短期内存在不一致,但是用户却获得了更好的产品体验。
END
评论