分布式事务-解决方案汇总

这篇博客详细介绍了分布式事务的场景和理论基础,包括CAP理论和Base理论。接着,它深入探讨了多种分布式事务解决方案,如2PC(两阶段提交)及其Seata实现、TCC(尝试-确认-取消)模式以及可靠消息最终一致性方案。最后,文章对比了这些解决方案的优缺点,为读者提供了选择分布式事务策略的依据。
摘要由CSDN通过智能技术生成

分布式事务

分布式应用(微服务架构)下,由不同的服务之间通过网络协作完成的事务称之为分布式事务

场景

微服务:创建订单减库存事务,银行转账事务等,跨jvm进程

多数据库:单体系统访问多个数据库实列,且两个数据库之间的数据存在同步性,属于跨数据库实列

多个服务访问同一个数据库:不同进程与数据库存在不同的链接,也是跨jvm进程

基础理论

1. CPA理论
  • Consistency(一致性)

    写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上,从任意节点读取到的数据都是最新的状态

    例如:商品写入主数据库成功,则查询从数据库数据也成功,反之则反之

    如何实现:1.写入后同步至从数据库。2.写入后,在向数据库同步期间将从数据库资源锁定,待同步完成后在释放锁,以免在新数据库写入成功后,向数据库查询到旧的数据

    问题:由于数据同步过程需要时间,所以写操作存在一定的延迟,其次会锁定资源,待数据同步之后在释放,再次,如果亲求数据同步失败的节点则返回错误信息,一定不能返回旧数据

  • Availability(可用性)

    任何事务操作都可以得到响应结果,且不会出现响应超时或响应错误

    例如:数据库接受到数据查询的请求则立即能够响应数据查询结果,且不允许出现响应超时或响应错误

    如何实现:1.写入后同步至从数据库。2.写入后,在向数据库同步期间不能将从数据库资源锁定。3. 即使没同步完全的数据,也要防护查询的结果,哪怕是旧数据,或者约定的默认值,不能错误或超时

    特点:必须响应所有请求

  • Partition(分区容忍性)

    针对分布式中不同节点部署在不同子网的情况下(网络分区),不可避免会出现因为网络问题而导致的节点之间通信失败,此时仍可对外提供服务

    例如:1. 主数据库向从数据库同步数据失败不能影响写操作。2. 一个节点挂掉不能影响另一个节点对外提供服务

    如何实现:1. 异步取代同步,实现松耦合。2. 添加节点,挂掉一个后,另一个节点提供服务

    特点:分区容忍性特点是分布式系统应该具备的基本能力

  • 不能同时具备CAP,在具备了P的前提下,C,A无法共存

    AP:如淘宝等,但是最求AP最终还是要满足最终一致性,即有时间差异,但是最终结果还是一致

    CP:比如zookeeper就是追求强一致性,比如跨行转账

    CA:单一系统满足CA

2. base理论

指Basically Available,Soft state 和 Eventually consistent(最终一致性)三个短语的缩写,是CAP理论中AP理论的一个扩展,通过牺牲强一致性来获得可用性,允许故障部分不可用,但确保核心功能可用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值