ITPub博客

首页 > 数据库 > 国内数据库 > 关于事务补偿机制

关于事务补偿机制

国内数据库 作者:mcxiaoracle 时间:2022-06-24 23:16:14 0 删除 编辑

事务补偿机制

什么是事务补偿机制?

针对每个操作,都要注册一个与其对应的补偿(撤销)操作

在执行失败时,调用补偿操作,撤销之前的操作

A给B转账的例子,A和B在两家不同的银行

A账户减200元,B账户加200元

两个操作要保证原子性,要么全成功、要么全失败

由于A和B在两家不同的银行,所以存在分布式事务的问题

转账接口需要提供补偿机制

如果A在扣减的过程出现问题,直接抛出异常,事务回滚

B在增加余额的过程中,出现问题,要调用A的补偿接口

A之前的扣减操作,得到了补偿,进行了撤销

保证了A和B的账是没有问题的


  • 优点:逻辑清晰、流程简单
  • 缺点:数据一致性比XA还要差,可能出错的点比较多
  • TCC属于应用层的一种补偿方式,程序员需要写大量代码



重试补偿案例:

当时是简单的进行定时,每隔15分钟拉取所有的未推送记录(包含上次未推成功的),放入MQ中,在消费端进行数据推送。---在消费端有另一套数据一致性机制,这里可以默认只要放入MQ,即可认定数据推送成功。

1、线下记录表增加两个字段,推送是否成功字段status,推送次数字段reload_count,表中已有记录创建时间ins_time

2、设置筛选条件:当前时间 - 创建时间 >= 2的n次幂 * 初次间隔时长

SELECT oh.*

ta_combine_order_hdr oh

where oh.`status`=2

and UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(oh.ins_time) >= POW(2,oh.reload_count) *10

and oh.ask_type = 1

limit 200


————————————————

推荐阅读:

原文链接:https://blog.csdn.net/weixin_45647118/article/details/117929335

https://www.csdn.net/tags/MtzaAgwsNjI0MzItYmxvZwO0O0OO0O0O.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2902747/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 实时一致性
请登录后发表评论 登录
全部评论
数据方向,了解oracle ,IBM DB2 730

注册时间:2019-09-30

  • 博文量
    286
  • 访问量
    226627