桥泰

导航

 

CP 各个分布式事务,等待彼此,一起提交或一起失败,弱可用。(由于一起提交分布式事务,降低可用性所以是基本可用)

  =======>解决了一致性C、分区容错性P

  适合场景:银行账户

AP  各个分布式事务,分别提交,如果失败进行一个补偿机制,达到最终的一致性。(软状态、最终一致性)

  =======>解决了一致性A、分区容错性P

      适合场景:物联网数据采集

 

seata是代理了数据库的database的增删改查的对象

解决方式:

1、XA模式

强一致性比较耗时,依赖数据库的acid支持,二阶段提交(资源锁定行锁,其他事务无法进行并发操作)

2、AT模式

弱一致性,行锁(其他字段还可以进行并发访问),分布式事务可以先提交,

undo-log生成快照(释放行锁后,其他事务可以获取到行锁进行操作)

        如果回滚,undo-log进行回滚,然后删快照

        如果是提交,提交之后,然后删快照

存在脏数据的可能性

 3、TCC

try:资源检查和预留

confirm:业务执行和提交

cancel:预留资源的释放

优点:

一阶段提交事务后,释放数据库资源,性能好

相比AT无需生成快照,无需全局锁,性能最强

不依赖数据库事务,而是依赖补偿机制,可以用于非事务型数据库

* 空回滚逻辑写在cancel阶段

* 业务悬挂写在try阶段

* 幂等写在cancel阶段

 

4、Saga模式

长事务解决,没有隔离性,需要自己编写状态机+补偿回滚逻辑

一阶段:直接提交本地事务

二阶段:成功什么都不做,失败则通过补偿业务回滚

事件驱动,吞吐性强

 

posted on 2025-05-28 11:39  桥泰  阅读(15)  评论(0)    收藏  举报