库存预留、并发控制与资源释放
电商订单与支付系统实战#Python全栈#第二十三阶段#电商订单与支付系统实战#库存预留、并发控制与资源释放约 804 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
库存总量、可售量、预留量与已售量应怎样定义?
追问 下单、支付、关闭与退货分别改变哪些数量?怎样保证字段和操作始终符合选定模型,而不混用两种扣减方式?
最后一件商品被两个用户同时购买,怎样防止超卖?
追问 先查询再修改为何需要额外保护?条件更新或锁定读取怎样判断实际成功,并验证竞争请求得到不同结果?
使用数据库锁管理库存时,需要注意什么?
追问 事务范围、索引条件和锁等待怎样影响并发?怎样核对实际锁定范围,而不是认为带了 FOR UPDATE 就一定只锁一行?
一个订单包含多个 SKU,库存预留怎样一起完成?
追问 某个 SKU 不足时,其余已预留资源如何回退?按固定顺序处理 SKU 怎样帮助减少死锁,遇到死锁重试需要哪些条件?
预留记录应包含哪些可追踪信息?
追问 订单、SKU、数量、有效期与处理状态怎样关联?重复释放或重复转为已售时,怎样保证不会多加或多减库存?
Redis 中的库存信息能否直接作为成交依据?
追问 缓存延迟、进程崩溃与数据库写入失败会造成什么差异?如果采用缓存预扣,需要补充哪些持久记录和校验,而不是把单个原子操作当作全链路一致性?
库存竞争很激烈时,怎样找出真正的性能限制?
追问 热点行等待、长事务、连接池与请求积压怎样观察?减少事务时间、限制流入和改变处理模型各有什么代价?
超时释放库存的任务延迟或重复运行时怎么办?
追问 按预留状态与截止时间筛选怎样避免重复释放?任务失败后如何补扫,单纯依赖缓存键过期通知会遗漏什么?
库存已释放后收到支付成功,怎样处理?
追问 重新确认可履约、记录异常或发起退款分别需要什么规则?怎样防止重复回调导致重复抢库存或重复退款?
退款成功后是否应该立即回补库存?
追问 未发货取消、已发货退货、损坏商品和仅退差价如何区别?退款金额状态与实际商品回库为什么需要分开验证?
库存并发核对资料: MySQL 8.4:Locking Reads。条件更新、锁范围和异常处理按实际 SQL、索引与事务配置验证。