fbs transaction - yaokun123/php-wiki GitHub Wiki

分布式事务

1、事务

用户定义的一系列数据库操作,
这些操作可以视为一个完整的逻辑处理工作单元
要么全部执行,要么全部不执行,
是不可分割的工作单元。

分布式事务是指绘涉及到操作多个数据库(服务)的事务。
其实就是将对同一数据库(服务)事务的概念扩大到了对多个数据库(服务)的事务。
目的是为了保证分布式系统中数据一致性。

2、XA规范

AP:应用程序
TM:事务管理器(协调者)
RM:资源管理器(DB)

3、2PC 两阶段提交协议

一阶段:准备(投票)阶段,所有参与者执行事务
二阶段:
    -提交:预提交都是成功的
    -回滚:有一个参与者返回no 或 协调者在规定时间内没有收到所有参与者的反馈。

优点:尽可能保障数据的一致性。
缺点:
    -单点故障:协调者出错,事务会失败。
    -阻塞资源:占用数据库连接,性能低。
    -数据不一致:二阶段出错,数据不一致。(脚本检查数据并恢复)

seata对两阶段的优化
阻塞资源问题解决:
    一阶段直接提交,并记录提交前的状态。
    二阶段提交什么都不用做,二阶段回滚需要将数据恢复。

4、TCC(Try Confirm Cancle)

第一阶段:Try
第二阶段:Confirm/Cancle