3.1 CAP理论
CAP理论告诉我们的是一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求。
一致性:你做了一个数据的修改,那么这个操作成功的时候,就必须保证分布式系统的各个节点都是一样的。
可用性:客户端往分布式系统的各个节点发送请求,都是可以获取到响应的。
分区容错性:分布式系统可以容忍网络分区的故障,出现网络分区的故障之后,分布式系统的各个节点之间无法进行通信,但整套分布式系统各个节点,各自为战,该干嘛干嘛,只不过互相之间无法通信而已。
CP 满足的情况下,A不能满足的原因:网络分区故障时,往节点A插入新数据,但是由于分区故障导致数据无法同步,此时节点A和节点B数据不一致,为了保证数据一致性,客户端查询时只能返回查询失败,避免出现两份数据,牺牲可用性。
AP 满足的情况下,C不能满足的原因:网络分区故障时,往节点A插入新数据,但是由于分区故障导致数据无法同步,此时节点A和节点B数据不一致,为了保证可用性,客户端查询时直接返回,此时客户端看到的是不一致的数据,牺牲一致性。
3.2 BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)。
基本可用:分布式系统在出现不可预知故障时,允许损失部分可用性。主要是响应时间和功能上的损失。比如:部分用户双十一高峰期淘宝页面卡顿或降级处理。
软状态:允许系统中的数据存在中间状态,即系统的不同节点的数据副本之间的数据同步过程存在延时,并认为这种延时不会影响系统可用性。比如:12306网站卖火车票,请求会进入排队队列。
最终一致性:所有的数据在经过一段时间的数据同步后,最终能够达到一个一致的状态。比如:理财产品首页充值总金额短时不一致。