用户余额下单,分库后如何保证一致性

用户余额一个库,订单表一个库,资金明细一个库
用户采用余额下单,怎么在大并发情况下保证不会被多下单且数据一致

阅读 3k
1 个回答

操作用户余额用原子操作
多下单你是指限购吗?


那就先创建订单(至少保证在任何情况下断电不会丢订单),然后在用类似下面的语句减余额

update balance=balance-90 where id=1 and balabce>=90

然后根据语句的执行结果去修改订单支付状态并添加资金明细
如果业务要求用户能显示出的订单必须都是成功支付的,那就把没支付成功的不显示就行了
最怀情况扣了钱还没来得及修改订单状态添加资金明细服务器断电了,这时靠余额库的数据库操作记录去恢复数据修改订单支付状态和资金明细(可能会需要一些人工处理)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进