ChihiroBlog

分布式事务-Seata

1. CAP原理

  • 介绍:CAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。

  • 如图,表示客户端经过网关访问订单服务,库存服务

  • 一致性: 向系统写一个新数据再次读取到的也一定是这个新数据。拿上图举例,请求订单服务下单,订单服务请求库存服务扣减库存,只要下单成功则库存扣减成功。

  • 可用性:任何时间都可以访问订单服务和库存服务,系统保证可用。

  • 分区容忍性:也叫分区容错性,分布式系统在部署时服务器可能部署在不同的网络分区,比如上图中订单服务在北京,库存服务在上海,由于处于不同的网络分区如果网络通信异常就会导致节点 之间无法通信,当出现由于网络问题导致节点 之间无法通信,此时仍然是对外提供服务的这叫做满足分区容忍性。

  • CAP理论强调这三点不能全部满足。

  • 由于是分布式系统就要满足分区容忍性,因为分布式系统难免存在网络分区,不能因为网络异常导致整个系统不可用,所以P一定要满足。

  • 进行分布式事务控制要么保证CP要么保证AP。

  • CP:强调强一致性,当P满足时,要想满足一致性,做法就是让系统不可用,因为一旦可用,就有可能因为分区问题导致订单服务执行但库存服务未执行,违反了一致性。

  • AP:强调可用性,当P满足时,如果想让订单服务和库存服务都可用,就有可能因为分区问题导致出现短暂的不一致,但AP可以达到数据的最终一致性。


2. Seata工作模式-AT模式

  • 如图,为AT模式的工作原理

    • 1.TM通知TC开启全局事务

    • 2.TM调用分支,RM向TC注册分支事务

    • 3.RM执行sql语句并直接提交,同时记录更新前后快的照存入undolog表中

    • 4.RM向TC报告事务状态

    • 5.TM通知TC全局事务提交完成

    • 6.TC检查分支事务状态,然后通知TM是否需要回滚

    • 7.如果分支事务状态全部正常,则删除undolog表数据;如果分支事务状态存在异常,则按照undolog表中的数据进行回滚,然后删除undolog表中数据


3. Seata工作模式-XA模式

  • 如图,为XA模式的工作原理

    • 1.TM通知TC开启全局事务

    • 2.TM调用分支,RM向TC注册分支事务

    • 3.RM执行sql语句,然后向TC报告分支事务状态

    • 4.TM通知全局事务提交完成

    • 5.TC检查分支事务状态,然后通知TM需要提交还是回滚

    • 6.如果分支事务状态全部正常,则TM执行提交;如果分支事务状态存在异常,则TM执行回滚

posted on 2025-03-17 20:28  Chihirooo  阅读(31)  评论(0)    收藏  举报

导航