网站建设用免费素材,网站前端开发培训资料,可以做推送的网站,wordpress 3d翻书特效1#xff09;、2PC 模式
数据库支持的 2PC【2 phase commit 二阶提交】#xff0c;又叫做 XA Transactions。
MySQL 从 5.5 版本开始支持#xff0c;SQL Server 2005 开始支持#xff0c;Oracle 7 开始支持。 其中#xff0c;XA 是一个两阶段提交协议#xff0c;该协议…1、2PC 模式
数据库支持的 2PC【2 phase commit 二阶提交】又叫做 XA Transactions。
MySQL 从 5.5 版本开始支持SQL Server 2005 开始支持Oracle 7 开始支持。 其中XA 是一个两阶段提交协议该协议分为以下两个阶段
第一阶段事务协调器要求每个涉及到事务的数据库预提交(precommit)此操作并反映是 否可以提交.
第二阶段事务协调器要求每个数据库提交数据。 其中如果有任何一个数据库否决此次提交那么所有数据库都会被要求回滚它们在此事务 中的那部分信息 XA 协议比较简单而且一旦商业数据库实现了 XA 协议使用分布式事务的成本也比较低。
XA 性能不理想特别是在交易下单链路往往并发量很高XA 无法满足高并发场景
XA 目前在商业数据库支持的比较理想在 mysql 数据库中支持的不太理想mysql 的XA 实现没有记录 prepare 阶段日志主备切换回导致主库与备库数据不一致。
许多 nosql 也没有支持 XA这让 XA 的应用场景变得非常狭隘。
也有 3PC引入了超时机制无论协调者还是参与者在向对方发送请求后若长时间 未收到回应则做出相应处理
2、柔性事务-TCC 事务补偿型方案
刚性事务遵循 ACID 原则强一致性。
柔性事务遵循 BASE 理论最终一致性
与刚性事务不同柔性事务允许一定时间内不同节点的数据不一致但要求最终一致。 一阶段 prepare 行为调用 自定义 的 prepare 逻辑。
二阶段 commit 行为调用 自定义 的 commit 逻辑。
二阶段 rollback 行为调用 自定义 的 rollback 逻辑。
所谓 TCC 模式是指支持把 自定义 的分支事务纳入到全局事务的管理中。 3、柔性事务-最大努力通知型方案 按规律进行通知不保证数据一定能通知成功但会提供可查询操作接口进行核对。这种 方案主要用在与第三方系统通讯时比如调用微信或支付宝支付后的支付结果通知。这种 方案也是结合 MQ 进行实现例如通过 MQ 发送 http 请求设置最大通知次数。达到通 知次数后即不再通知。 案例银行通知、商户通知等各大交易业务平台间的商户通知多次通知、查询校对、对 账文件支付宝的支付成功异步回调 • 业务主动方在完成业务处理后向业务被动方(第三方系统)发送通知消息允许存在消息丢失。 • 业务主动方提供递增多挡位时间间隔(5min、10min、30min、1h、24h)用于失败重试调用业务被动方的接口在通知N次之后就不再通知报警记日志人工介入。 • 业务被动方提供幂等的服务接口防止通知重复消费。 • 业务主动方需要有定期校验机制对业务数据进行兜底防止业务被动方无法履行责任时进行业务回滚确保数据最终一致性。