商城设计要点(六)-账户余额更新,保证事务

zszdevelop大约 2 分钟

商城设计要点(六)-账户余额更新,保证事务

1. 简介

用户支付,我们要从买家账户减掉一定金额,再往卖家增加一定金额,为了保证数据的完整性可追溯性,变更余额时,我们通常会同时插入一条记录流水

账户流水核心字段:流水ID、金额、交易双方账户、交易时间戳、订单号、

注意:账户流水只能新增,不能修改和删除。流水号必须是自增的。

后续,系统对账时,我们只需要对交易流水明细数据做累计即可,如果出现和余额不一致情况,一般以交易流水为准来修复余额数据。

更新余额记录流水 虽属于两个操作,但是要保证要么都成功,要么都失败。要做到事务。

2. 解决

数据库的事务隔离级别有:读未提交(RU)读已提交(RC)可重复读(RR)串行化(Serializable)

常用的隔离级别是 RC 和 RR ,因为这两种隔离级别都可以避免脏读。

当然,如果涉及多个微服务调用,会用到分布式事务

分布式事务,细想下也很容易理解,就是将一个大事务拆分为多个本地事务,本地事务依然借助于数据库自身事务来解决,难点在于解决这个分布式一致性问题,借助重试机制,保证最终一致是我们常用的方案

参考文章

聊聊电商系统中常见的9大坑!库存超卖、重复下单、物流单ABAopen in new window

Loading...