优化高并发下的秒杀性能
发布时间:2021-03-13 13:15:31 所属栏目:传媒 来源:互联网
导读:.检测UPDATE语句的执行返回值,如果返回1证明中奖成功,否则证明该奖品被其他人抢了 为什么要添加乐观锁 正常情况下获取奖品、然后把奖品更新给指定用户是没问题的。如果不添加user_id=0时,高并发场景下会出现下面的问题: 两个用户同时查询到了1个未中奖的
![]() .检测UPDATE语句的执行返回值,如果返回1证明中奖成功,否则证明该奖品被其他人抢了 为什么要添加乐观锁 正常情况下获取奖品、然后把奖品更新给指定用户是没问题的。如果不添加user_id=0时,高并发场景下会出现下面的问题:
添加乐观锁之后的抽奖流程
乐观锁优缺点 优点
缺点
压测 在MacBook Pro 2018上的压测表现如下(Golang实现的HTTP服务器,MySQL连接池大小100,Jmeter压测):
Redis实现可以看到乐观锁的实现下争抢比太高,不是推荐的实现方法,下面通过Redis来优化这个秒杀业务。 Redis高性能的原因
实现流程 1.活动开始前将数据库中奖品的code写入Redis队列中 2.活动进行时使用lpop弹出队列中的元素 3.如果获取成功,则使用UPDATE语法发放奖品 (编辑:揭阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

