码迷,mamicode.com
首页 > 其他好文 > 详细

项目中实现幂等的几种方式

时间:2019-11-13 10:36:24      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:处理   插入数据   order   分布   自动   获取   cas   HERE   更新   

1.业务唯一编号:

  当系统接收到唯一的no时,先判断no对应的状态是否处理过,处理过则直接返回;防止并发的情况,需要在判断处理的地方加锁,

  多系统部署,需要加分布式锁 或者在事务中使用 select for update 获取行级锁,事务提交后会自动释放行级锁

  或者使用乐观锁 :

  update t_order set status = 1 where order_id = trade_no where status = 0;
  //上面的update操作会返回影响的行数num
  if(num==1){
  //表示更新成功提交事务;
  }else{
  //表示更新失败回滚事务;
  }

  类似于cas机制

2.数据库唯一索引

  插入数据出错,直接回滚事务,并返回信息

 

  

项目中实现幂等的几种方式

标签:处理   插入数据   order   分布   自动   获取   cas   HERE   更新   

原文地址:https://www.cnblogs.com/Mr-Rocker/p/11847006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!