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