分布式事务的概念
分布式系统会将一个应用系统拆分为多个独立部署的服务,事务操作需要多个服务远程协作完成,分布式系统环境下由不同的服务之间通过网络远程协作完成的事务。
产生场景:
1. 微服务架构,跨JVM进程产生分布式事务。比如:订单和库存,下订单的同时需要减少库存。
2. 单体系统访问多个数据库实例,跨数据库产生分布式事务。比如:用户管理系统的信息删除用户,不仅需要删除用户还要删除订单。
3. 多服务访问同一个数据库,跨JVM进程产生的分布式事务。
CAP理论:在P的基础上,C和A不能同时共存
一致性Consistency:写操作后的读操作可以读取到最新状态。
1. 主从同步
2. 写入master后向slave同步时需要上锁,以免同步完成前得到旧数据
特点:
1. 由于存在数据同步过程,写操作的响应会有一定延迟
2. 请求同步失败的数据会返回错误信息,不会返回旧数据
可用性Availability:事务操作都可以得到响应,不会响应超时或错误。
1. 主从同步
2. 不可锁定slave,查到旧数据也可以
分区容忍性Partition Tolerance:分布式系统各节点处于不同的子网,会出现由于网络问题节点之间通信失败,此时仍可对外提供服务。
场景:master向slave发送数据失败不影响读写操作
其中一个节点挂掉不影响其他节点提供服务
1. 异步取代同步,实现节点之间的松耦合
2. 添加数据库节点,以防其中一个挂掉
分布式系统最多只能保证两项
AP场景:今日退款明天到账。保证最终一致性
CP场景:跨行转账,一次转账请求需要等待双方银行系统都完成整个事务。追求强一致性。
BASE理论:是对AP的扩展,通过牺牲强一致性来获得可用性,当出现故障允许不可用,但要保证核心功能可用。
基本可用Basically Availability:如电商系统中商品交易付款出问题,商品浏览功能依然可用。
软状态Soft State:允许系统存在中间状态,最终一致性实现后再改为成功状态,如支付中。
最终一致性Eventually Consistent:经过一段时间后,数据最终达到一致性。