什么是CAP理论
CAP理论,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),不能同时成立。
CAP理论
1、一致性(Consistency):一致性是指写操作后的读操作可以读到最新的数据状态,当数据分布在多个节点上,从任意结点读取到的数据都是最新的状态。
2、可用性(Availability):可用性是指任何事务操作都可以得到响应的结果并且不会出现响应超时或者响应错误的情况发生。
3、分区容忍性(Partition tolerance):
通常分布式系统的各个结点部署在不同的子网上,不可避免的会出现由于网络问题而导致结点之间通信失败,此时仍可以对外提供服务,这叫做分区容忍性。(基本能力)
CAP的组合方式
在所有的分布式事务场景中不会同时具备CAP三个特性,因为在具备了P的前提下C和A是不能共存的。
分区容忍的含义:
(1)主数据库通过网络向从数据库同步数据,可以认为主从数据库部署在不同的分区上,通过网络进行交互。
(2)当主数据库和从数据库之间的网络出现问题不影响主数据库和从数据库对外提供服务。
(3)其一个节点挂掉不影响另—个节点对外提供服务。
如果要实现C则必须保证数据一致性,在数据同步的时候为防止向从数据库查询的不一致则需要从数据库锁定,待完成同步之后解锁,如果同步失败从数据库要返回错误信息或超时信息。
1.CA组合
CA组合就是保证一致性和可用性,放弃分区容忍性,即不进行分区,不考虑由于网络不通或节点挂掉的问题。那么系统将不是一个标准的分布式系统,我们最常用的关系型数据库就满足了CA。
2.CP组合
CP组合就是保证一致性和分区容忍性,放弃可用性。Zookerper就是追求强一致性,放弃了可用性,还有跨行转账,一次转账请求要等待双方银行系统都完成整个事务才能完成。
3.AP组合
AP组合就是保证可用性和分区容忍性,放弃一致性。这是分布式系统设计时的选择。
小结
通过上面我们学习了CAP的基础理论知识,CAP是一个已经证实的理论:一个分布式系统做多只能满足CAP中的两项,为达到良好的响应性能来提高用户体验,因此一般会做出如下选择:保证A和P,舍弃C强─致性,保证最终━致性。