码迷,mamicode.com
首页 > 其他好文 > 详细

高并发处理小计

时间:2020-01-04 10:44:28      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:处理   问题   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!