高并发处理小计

Posted feihusurfer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高并发处理小计相关的知识,希望对你有一定的参考价值。

场景-下单买东西

1)第一步:首先判断账户余额是否够,够则扣款

2)第二部:生成订单

1),2)两部通过事务进行控制,事务隔离界别是:READ COMMITTED

高并发现象

如果前端未加上请求后遮罩效果(未回应不给点击),当服务器代码刚更新的时候(服务器会有几秒钟的延迟响应),用户点击按钮,服务器无法快速响应,这个时候用户就可以多次点击下单按钮。

当服务器回复相应后,就会出现高并发请求问题。出现的现象是,多个线程第一步都执行了,余额只被扣了一次,订单则生成了多个。

解决方案

1)方案1:给第一步代码加上lock,只允许一个请求线程进入,其它请求线程必须排队等待,出现的现象是,多次点击,会生成多个订单,余额扣除和订单生成数据是一致的。

2)方案2:将事务的隔离级别设置为SERIALIZABLE,出现的现象是,多次点击,只会生成一个订单,只会成功一个请求,其它线程会因为隔离级别问题导致请求错误。

3)方案3:给前端请求加上遮罩效果,如果一个请求未回应,不允许多次点击发送请求,方案3可以和方案1或方案2配合一起使用。前后端一起控制。

有问题欢迎指正。

  

以上是关于高并发处理小计的主要内容,如果未能解决你的问题,请参考以下文章

高并发处理

mysql大数据高并发处理

sql处理高并发

高并发处理

并发处理学习

华为技术架构师分享:高并发场景下缓存处理的一些思路