标签:处理 问题 bsp 其它 遮罩 响应 请求 前端 按钮
1)第一步:首先判断账户余额是否够,够则扣款
2)第二部:生成订单
1),2)两部通过事务进行控制,事务隔离界别是:READ COMMITTED
如果前端未加上请求后遮罩效果(未回应不给点击),当服务器代码刚更新的时候(服务器会有几秒钟的延迟响应),用户点击按钮,服务器无法快速响应,这个时候用户就可以多次点击下单按钮。
当服务器回复相应后,就会出现高并发请求问题。出现的现象是,多个线程第一步都执行了,余额只被扣了一次,订单则生成了多个。
1)方案1:给第一步代码加上lock,只允许一个请求线程进入,其它请求线程必须排队等待,出现的现象是,多次点击,会生成多个订单,余额扣除和订单生成数据是一致的。
2)方案2:将事务的隔离级别设置为SERIALIZABLE,出现的现象是,多次点击,只会生成一个订单,只会成功一个请求,其它线程会因为隔离级别问题导致请求错误。
3)方案3:给前端请求加上遮罩效果,如果一个请求未回应,不允许多次点击发送请求,方案3可以和方案1或方案2配合一起使用。前后端一起控制。
有问题欢迎指正。
标签:处理 问题 bsp 其它 遮罩 响应 请求 前端 按钮
原文地址:https://www.cnblogs.com/feihusurfer/p/12147997.html