现有系统是简单三层,以商品购买为例。逻辑层判断件数是否大于0.但是仍然出现两个客户同时购买一个件数为1的商品。怎么杜绝这种事情发生?
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
1、将此购买逻辑通过存储过程完成,因为 DB 是唯一的,所以可以做到逻辑正确性;
2、可用 Count 字段(通常会使用额外的RowVersion 字段,timestamp 类型来做并发更新)来控制更新语句,通过检查更新是否成功来判断是否购买成功,类似如下代码:
var version= shop.RowVersion;
shop.count--;
update t set Count = shop.count from t where RowVersion = version;
3,将订单处理逻辑部署为单独的服务,此服务串行读取订单并处理
- 2 回答
- 0 关注
- 372 浏览
添加回答
举报
0/150
提交
取消