幂等及技术方案

幂等(idempotent)
一个幂等操作的特点是:任意多次所产生的影响均与一次执行的影响相同。
幂等函数,可以使用相同参数重复执行,并能获得相同结果的函数。

实现幂等的技术方案

  1. 查询,select就是幂等操作

  2. 删除

  3. 唯一索引,防止新增脏数据

  4. token机制,防止页面重复提交

  5. 悲观锁,解决并发事务的更新丢失问题

    1. 使用select … for update来执行(select * from employee where id = 1 for update; )
    2. 事务A使用悲观锁后,事务B再使用时将会被阻塞
    3. 使用commit可以解除阻塞
    4. 解除阻塞后,事务B可以看到事务A的修改
  6. 乐观锁,(逻辑实现,数据库不提供支持)做法:版本号控制和时间戳控制(每次更新版本号变更)

    1. 乐观锁只是在更新数据那一刻锁表,其他时间不锁表,所以相对于悲观锁,效率更高
    2. 通过版本号实现 update table_xxx set name=#name#,version=version+1 where id=#id# and version=#version#
    3. 通过条件限制 update table_xxx set avai_amount=avai_amount-#subAmount# where id=#id# and avai_amount-#subAmount# >= 0
  7. 分布式锁

    1. 通过第三方系统redis或zookeeper,在业务系统插入或更新数据,获取分布式锁,然后操作再释放锁。
  8. 状态机幂等,有限状态机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值