CAP定理通俗理解
1、什么是CAP定理?
指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。
C:更新操作成功后,所有节点在同一时间的数据完全一致。(事务的一致性:事务前后的数据完整性保持一致)
A:用户访问数据时,系统能否在正常响应时间返回预期结果。(事务的原子性:事务是一个不可分割的工作单位,事务要么发生要么不发生)
P:分布式系统遇到某节点或网络分区故障的时候,仍能对外提供一致性和可用性的服务。
简单来说:
C:强一致性,A:available不是指高可用,而是希望给用户一个好的体验,返回一个结果,P:分布式系统遇到某节点或网络分区故障的时候,仍能对外提供一致性和可用性的服务。
CAP这三个要素最多只能同时实现两点,不可能三者兼顾。
所有只有CP,AP,AC
当前场景:订单系统下单买了1瓶酒,库存系统酒的数量-1。分布式系统中,系统之间需要网络通信等各种问题。无法实现买了1瓶酒,库存即时-1。
CP:订单创建后,等待库存减少后才返回结果。保证数据一致,强一致性表现,用户体验差。(类似银行存钱)
AP:订单创建后,不等待库存减少后就返回结果。那库存数据怎么办?(异步处理后通知订单系统,若异步处理失败,有补偿机制(重新发请求,补录,校对程序)保证数据一致)。(类似淘宝)
AC:不拆分数据库系统,在一个数据库的一个事务中完成操作,即单体应用。下单,减库存在一个事务。缺点:不能做分区, 分区涉及网络,进而涉及分区容错性,进而选CP,AP。
注意:
AC: 单体架构项目,P:指分布式架构下,节点实例故障,网络故障,总能保证一致性和可用性(高可用)