C--consistency:
一致性是指,数据的读取永远读到的是最新的数据。当数据分布在多个节点上时,从任意节点读取到的数据永远是最新的状态。
如何实现一致性?
1.写入主数据后要将数据同步到从数据库
2.写入主数据后,在向从数据库同步期间要将从数据库锁定,待同步完成后再释放锁,避免在新数据写入成功后,查询到旧数据。
分布式系统一致性的特点?
1.存在数据同步的过程,写操作的响应会有一定的延迟
2.会对资源暂时锁定,同步完成后再释放
A--Availability:
可用性是指,无论任何事务操作都可以得到响应结果,且不会出现响应超时或相应错误。
如何实现可用性?
1.写入主数据库后要将数据同步到从数据库
2.不可将数据库中的资源锁定
3.即使数据还没有同步过来,从数据库也要返回查询的数据,即使是旧数据,无旧数据就返回一个约定的默认信息,但不能返回错误或响应超时。
分布式系统可用性的特点:
1.所有的请求都不会返回错误或响应超时
P--Partition tolerance:
分区容错性是指:分布式系统的各个结点部署在不同的子网,这叫做网络分区,不可避免的会出现网络问题而导致通信失败,此时仍可以对外提供服务,这就是分区容错性。
如何实现分区容错性?
1.尽量使用异步取代同步操作,例如:redis主服务对从服务的数据同步
2.添加从服务节点,其中一个从服务挂了,其他从服务也能提供服务
分区容错性的特点:
1.分区容错性是分布式系统具备的基本能力。
CAP组合方式
在所有分布式事务场景中不会同时具备CAP三个特性,因为在具备了P的前提下C和A是不能共存的。
AP:
放弃一致性,追求分区容错性和可用性。例如:redis主从赋值
CP:
放弃可用性,追求一致性和分区容错性。例如:zookeeper追求的强一致性、跨行转账
CA:
放弃分区容错性,即不进行分区,不考虑网络不通或节点挂掉的问题,则可以实现一致性和可用性。
BASE理论
BASE是Basically Availability(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中AP的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用保证核心功能可用,允许数据在一段时间内不一致,但最终达到一致状态。满足BASE理论的事务,我们称之为柔性事务。如:电商交易付款出问题了,商品依然可以正常浏览。
软状态:由于不要求强一致性,所以BASE允许存在中间状态(软状态),比如订单的支付中状态,待数据最终一致后改成成功状态。