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

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

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

欢迎大家来参与讨论

扩展讨论【悲观锁】

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

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

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

每天一点小知识,到那都是大佬,哈哈
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

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

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

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

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