美文网首页
分布式事务

分布式事务

作者: 策马踏清风 | 来源:发表于2020-06-30 14:15 被阅读0次

    分布式事务

    1. 是什么
    • 分布式事务就是一次大的事务操作由不同的小操作组成,这些小操作分布在不同的服务器上
    • 分布式事务需要保证不同服务器上的小操作要不全部失败,要不全部成功。本质上是要保证数据库数据一致性
    1. 为什么需要分布式事务
    • 当数据库单表一年产生数据超过1000W时就需要考虑分表,将一个数据库分成多个数据库。保证这些数据库的数据一致性就需要分布式事务
    • 应用业务服务化(SOA),将之前单机应用变成由服务组成的微服务系统。分离出入订单系统用户中心库存中心订单中心等。每个微服务都有自己的数据库。例如提交订单的操作,需要订单和库存同时操作,所以需要分布式事务保证下单成功库存减少,下单失败库存不变。

    事务的特性ACID

    1. 原子性A
      整个事务中所有操作要不同时完成,要不全部失败
    2. 一致性C
      事务的执行必须保证系统的一致性,只要事务成功了,事务的操作就一定要体现在数据库中
    3. 隔离性I
      事务之间不会相互影响,一个事物的中间状态不会被其它事务感知
    4. 持久性D
      事务完成了之后事务对数据的操作就会完全保存在数据库中,停电宕机也会保存

    基于XA协议的两阶提交

    1. 名词解释
    • XA是一个分布式事务协议,主要分为两个部分事务管理器本地资源管理器
    • 本地资源管理器通常由数据库实现,负责本地资源的提交和回滚
    • 事务管理器作为全局调度者,负责调度本地资源
    1. 步骤
    • 第一阶段:事务管理器通知各个本地资源管理器预备操作,本地资源管理器回复就绪(锁住资源)
    • 第二阶段:事务管理器通知本地资源管理器提交,本地资源管理器回复成功
    1. 优缺点
    • 优点是协议简单,大部分商业数据库(OracleDB2等)都实现了XA协议,使用分布式的成本较低。
    • 缺点是性能差,在mysql中支持不理想(没有prepare阶段日志,准备切换回导致主库和备库数据不一致),很多nosql也没有XA的支持。这些缺点也导致其应用狭隘

    基于消息事务实现的最终一致性事务

    1. 解释
    • 消息事务就是基于消息中间件的两阶段提交,是对消息中间件的特殊利用。此方法实现的事务是最终一致性,并不能保证实时一致。
    1. 步骤
    • 系统A发送预备消息给中间件
    • 中间件保存预备消息并返回
    • 系统A执行本地事务
    • 执行结束后发送给消息中间件
    • 消息中间件保存信息并发送给其它系统
    • 其它系统执行本地事务并返回(如果失败中间件会重复发送)
    • mq将最终执行结果返回系统A
    1. 优缺点
    2. 性能好
      2.缺点是如果其它系统一直不成功,会破坏一致性。

    TCC编程模式

    • 根据业务决定具体代码实现
    • 一种编程框架,吧业务逻辑分为Try``Confirm``Cancel三个操作
    • 例如下单,Try就是去库存,Confirm是更新订单,Cancel是失败恢复库存
    • 本质是人为进行两段式提交

    相关文章

      网友评论

          本文标题:分布式事务

          本文链接:https://www.haomeiwen.com/subject/jwetqktx.html