一个简单的高并发秒杀商品代码设计

场景

假设我们一台服务器的数据库只能承受两万人的并发,现在我们的并发达到了十万,我们该如何解决这个问题呢?

不能使用负载均衡  

       我们的整个站点只有这一个高并发,而且这个告别发也只是临时的,活动完成之后就没了,那么我们仅仅为了这个活动去加服务器,去做负责均衡是不合适的,性价比太低了,只能代码解决了、

一 ,减少请求

        可以预知的是,用户为了抢这个商品,一定会疯狂的点击下单按钮,那么就会对服务器造成大量多余的请求。解决办法是点击下单按钮之后,让这个按钮变为不可点击,并且使用本地缓存,记录用户已经下单,防止刷新页面后继续下单。这样,十万请求也就变成了三四万。

二,数据库锁

        在下单之前,先查询一下库存,有库存再下单,保证数据的正确,避免出现只有100个商品,下单1000条。

三,服务端限制请求次数

       因为我们前端做了限制,但是不可避免的会有一些人走其他途径下单,例如模拟http模拟请求,针对这些人只能服务端做限制了。

四,令牌机制

        活动开启之前,加入我们有100个秒杀商品,那么我们生成100个令牌,那么前一百个用户拿到了令牌,才有资格去访问数据库、下单,这样以来数据库压力几乎没有了。而其他的用户,直接会被告知,抢完了,程序的压力也会骤降。


        

猜你喜欢

转载自blog.csdn.net/weixin_41609327/article/details/80890797