分布式事务的概念

分布式系统会将一个应用系统拆分为多个独立部署的服务,事务操作需要多个服务远程协作完成,分布式系统环境下由不同的服务之间通过网络远程协作完成的事务。

 

产生场景: 

1. 微服务架构,JVM进程产生分布式事务。比如:订单和库存,下订单的同时需要减少库存。

 

 

 

 

 

 

2. 单体系统访问多个数据库实例,跨数据库产生分布式事务。比如:用户管理系统的信息删除用户,不仅需要删除用户还要删除订单。

 

3. 多服务访问同一个数据库,跨JVM进程产生的分布式事务。

 

CAP理论:在P的基础上,C和A不能同时共存

一致性Consistency写操作后的读操作可以读取到最新状态。

1. 主从同步

2. 写入master后向slave同步时需要上锁,以免同步完成前得到旧数据

特点:

1. 由于存在数据同步过程,写操作的响应会有一定延迟

2. 请求同步失败的数据会返回错误信息,不会返回旧数据

 

可用性Availability事务操作都可以得到响应,不会响应超时或错误。

1. 主从同步

2. 不可锁定slave,查到旧数据也可以

 

分区容忍性Partition Tolerance分布式系统各节点处于不同的子网,会出现由于网络问题节点之间通信失败,此时仍可对外提供服务。

场景:masterslave发送数据失败不影响读写操作

     其中一个节点挂掉不影响其他节点提供服务

1. 异步取代同步,实现节点之间的松耦合

2. 添加数据库节点,以防其中一个挂掉

 

分布式系统最多只能保证两项

AP场景:今日退款明天到账。保证最终一致性

CP场景:跨行转账,一次转账请求需要等待双方银行系统都完成整个事务。追求强一致性。

 

BASE理论:是对AP的扩展,通过牺牲强一致性来获得可用性,当出现故障允许不可用,但要保证核心功能可用。

基本可用Basically Availability:如电商系统中商品交易付款出问题,商品浏览功能依然可用。

软状态Soft State:允许系统存在中间状态,最终一致性实现后再改为成功状态,如支付中。

最终一致性Eventually Consistent:经过一段时间后,数据最终达到一致性。