业务:
先写操作,然后读取相关数据判断操作完后是否符合某种条件。
或者先读判断,如果可以进行写操作
代码实现:
1. 一般的代码,先进行分布式锁控制。
简单的代码 2. 用数据库锁cas
举个例子:
一笔订单只能支付一次。
当第二笔支付返回时应该退款。
错误代码:判断之前无支付,修改支付状态,修改订单状态。如果有支付走退款逻辑,
一般代码:分布式并发锁,判断之前无支付,修改支付状态,修改订单状态。如果有支付走退款逻辑。
精简代码:修改支付状态,cas修改订单状态。 如果没有修改成功,并且之前是已支付。走退款逻辑。
不过还是推荐一般代码,因为压力再应用服务器。不过吞吐量肯定不如cas,因为是自旋而不是数据库单机的队列等待。