分布式事务基础理论CAP/BASE

Posted by Liao on 2023-03-07

本地事务

使用本地事务,更多是通过关系型数据库数据库来控制事务,利用数据库本身的事务特性ACID实现,因此称数据库事务。

由于主要靠关系型数据库控制事务,而数据库和应用通常在同一个服务器,因此说关系型的数据库事务称为本地事务。

分布式事务

提供服务的各个节点分布在不同的机器上,相互之间通过网络交互,但网络不稳定会出现不一致的问题,因此需要更进一步的理论支持。

CAP理论

CAP分别是Consistency(一致性)、Avaliable(可用性)、Patition tolerant(分区容错性) 的首字母。一个分布式系统只能满足其中两个(CP/AP)

  • **一致性 (Consistency)**:指的是写操作后读操作可以读取到最新的数据状态,当数据分布在多个节点上时,从任意节点读取到的数据都是最新状态。这种一致性是强一致性。
    • 读写分离架构下(主负责写入,从负责读),写入主数据库后要将数据同步到从数据库。
    • 写入主数据库后,同步给从数据库期间,要将从数据库锁住,同步完后再释放锁,以免在同步过程中读数据读取到旧的数据
  • 可用性 (Avaliable):任何事务的操作都可以得到响应结果,且不会出现响应超时或者响应错误
  • **分区容错性 (Patition tolerant)**:分布式系统的各个节点部署在不同子网中,这是网络分区。由于网络问题导致某个节点间通信失败,但不影响集群对外提供服务。
    • 异步取代同步操作,节点之间解耦合
    • 一主多从

权衡

Patition tolerant是在分布式系统中要保证的,因此只能在C和A中权衡:

  • 保证一致性 (CP):如银行交易等要求强一致性的场景。实际应用:zookeeper
  • 保证用户体验 (AP):MySQL异步复制、半同步复制、Eureka组件

BASE理论

BASE理论是对CAP中AP的扩展,通过牺牲强一致性来获得可用性。当出现故障时,允许部分不可用,但要保证核心功能可用,允许数据在一段时间内不一致,但最终达到一致状态。满足BASE理论的事务,称之为“柔性事务”

  • 基本可用(Basically Avaliable):分布式系统出现故障时,允许损失部分功能可用性,但保证核心功能可用
    • 电商网站交易付款出现问题,
  • 软状态(Soft state):分布式系统中允许存在中间状态(软状态),这个状态不影响系统可用性
    • “支付中”,”数据同步中”等,待数据最终一致后改为”成功”状态
  • 最终一致性(Eventually consistent):经过一段时间之后,所有节点数据都会达到一致,但需要一定时间的延迟、等待