讨论下如何优雅的通过乐观锁更新我们的库存字段

提出问题【乐观锁讨论】:

  1. 如果我们考虑使用无版本的乐观锁更改库存,那条件就是库存的变更,这个时候影响不大
  2. 如果我们数据表实现了version 字段来处理库存,这个时候我们去更新库存,发现版本变更了,我们还要更新库存吗,如果仅仅是更新库存,是否允许呢

欢迎大家来参与讨论

扩展讨论【悲观锁】

对于并发对数据的修改的悲观锁方案:

  1. 第一种给mysql 增加一个locked_at 字段 ,如果字段有数据,说明有人在修改记录,无数据表明是正常的
  2. 使用redis lock 进行对数据加锁,这种也是避免了同事修改数据造成的影响,但是我们如果要针对一个修改时间比较长的表单时,要如果确保这个加锁时间呢

这里作为扩展悲观锁的讨论

每天一点小知识,到那都是大佬,哈哈
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

取决于你的库存来源是否绝对正确,如果绝对正确,例如线下排查库存,那么根据业务,可以做好日志,直接强制覆盖,类似支付通知,为了促进交易订单,可以根据业务允许把一般超时订单在更新为已支付,正常发货,因为通知验证真实性之后有绝对的控制力

如果你的数据来源不准确,可以增加重新尝试机制,发现幻读脏度等数据后,重新尝试

1年前 评论
raybon (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!