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