高并发处理小计
Posted feihusurfer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高并发处理小计相关的知识,希望对你有一定的参考价值。
场景-下单买东西
1)第一步:首先判断账户余额是否够,够则扣款
2)第二部:生成订单
1),2)两部通过事务进行控制,事务隔离界别是:READ COMMITTED
高并发现象
如果前端未加上请求后遮罩效果(未回应不给点击),当服务器代码刚更新的时候(服务器会有几秒钟的延迟响应),用户点击按钮,服务器无法快速响应,这个时候用户就可以多次点击下单按钮。
当服务器回复相应后,就会出现高并发请求问题。出现的现象是,多个线程第一步都执行了,余额只被扣了一次,订单则生成了多个。
解决方案
1)方案1:给第一步代码加上lock,只允许一个请求线程进入,其它请求线程必须排队等待,出现的现象是,多次点击,会生成多个订单,余额扣除和订单生成数据是一致的。
2)方案2:将事务的隔离级别设置为SERIALIZABLE,出现的现象是,多次点击,只会生成一个订单,只会成功一个请求,其它线程会因为隔离级别问题导致请求错误。
3)方案3:给前端请求加上遮罩效果,如果一个请求未回应,不允许多次点击发送请求,方案3可以和方案1或方案2配合一起使用。前后端一起控制。
有问题欢迎指正。
以上是关于高并发处理小计的主要内容,如果未能解决你的问题,请参考以下文章