脑补了一个微服务场景, 请问解决方案是什么?

查看 574|回复 45
peyppicp   
我司库存扣减业务,现在一般就几种扣减模式:
1. 下单减库存,订单取消回补库存,订单取消接口编排库存回补逻辑
2. 下单预占库存,支付成功减库存,订单超时释放
3. 支付减库存,业务场景并不多
前提:当前使用的数据库是魔改过的,并针对高并发场景下执行 UPDATE value=value-1 做过定制优化,20C 机器提供单行 5w+ TPS 容量
所以 op 需要根据不同场景来看:
场景 1:下单时交易同步调用库存服务完成扣减,库存内部落单并更新库存-1 ;订单取消时,交易负责触发库存的回补动作,对账兜底
场景 2:下单交易同步调用库存预占接口类似 TCC 模式预占库存并发送订单超时队列延迟消息,支付回调触发同步减库存;消费到订单已取消消息后,check 订单支付状态未成功则返还库存信息
场景 3:比较简单不提
实际上业务中基本上都是同步调用,用 MQ 做异步处理会导致系统设计复杂,用户体验并不好,且存在先后顺序问题,不过一般情况下加个时间戳也就解决了
dotw2x   
想表达异步消费无序的场景?Actor 模型很适合.
xuanbg   
@MoYi123 不懂业务的技术,做起事来往往事倍而功半。还在那自我感动攻克了什么什么技术难题,实际上根本不需要。真真是可笑。
如果你要和我讨论数据一致性问题,请先把业务场景摆出来。电商有电商的一致性需求,银行又有银行的一致性需求。不确定场景,这事太过复杂,就没什么可讨论的价值。
chaleaochexist
OP
  
@sadfQED2 我就是不会才问的.
请随意喷.
chaleaochexist
OP
  
@xuanbg
1. 付款成功才减 可能超卖.
2. 网络延迟
3. 这是一个脑补的问题, 我没做过电商业务. 实际上我没做过互联网项目. 你也不用着一直反问.
pierswu   
可用库存=库存-待出库存
创建购买订单,待出库存+1
支付成功 待出库-1 库存-1
支付失败 待出库-1
待出库存可以在数据库也可以在 redis 中
MoYi123   
@xuanbg 那就来讲讲业务, 库存是电商的一个非常核心的功能, 和仓储, 物流, 财务, 运营, 采购这些都有密切相关, 库存不可靠的话, 你要全公司一起来兼容你的 bug 吗?
xuanbg   
@MoYi123 库存负数就不能正确充正了吗?
HyperionX   
@xuanbg 有些业务场景就是要求不允许有超售,异步顺序问题也很常见。不懂可以理性探讨,不必一边见识有限还要 diss 别人 low
MoYi123   
@xuanbg 比方说我有个地方要算库存预计什么时候销售完, 你给我个负数, 这是不是就有 bug 了?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部