电商秒杀简述

版权声明:欢迎读阅 https://blog.csdn.net/weixin_44266137/article/details/89215276

说到秒杀,相信大家都不陌生。
这里涉及到的无非是大家口口相传的——高并发,高可用

当一件商品汇聚了所有人的目光,都希望在同一天,同一时刻去买到它,但因数量有限,不能同时满足所有人的需求。就需要抢购,限时发放,同时还不能让大量的用户将服务器搞崩。这就涉及到了高并发,高可用的概念。我这里只是提一下简单的解决办法以及测试方法。

首先做一个测试接口,来描述我的处理方法。

代码是基于Django的 简直就是废话,对不起!

# 秒杀接口测试
def SecKill(request):
    res_one = Product.objects.get(pk=7)

    if res_one.pd > 0:
        time.sleep(5)
        # res_one.pd = res_one.pd - 1
        # res_one.save()
        with connection.cursor() as c:
            c.execute(' update product set pd = pd - 1 where id = 7 ')
        return HttpResponse('ok')
    else:
        return HttpResponse('没有了')

代码中 用到了原生SQL语句去执行,是因为效率会快很多。
ORM被注释掉是因为其中内部封装了对用户有了排队的限制,也就是锁机制,所以不能直观的感受到数据库中库存的变化,所以先拿原生SQL来做测试(以上代码中,需要有一个测试的数据库,其中pd为库存字段)

另外,测试用到了XAMPP中安装时候自带的Apache的压测功能。用它的服务去访问这个测试的接口、就能直观的看到当有大量用户访问该接口时所产生的数据走势。

测试完之后,在打开被注释的代码,将SQL注释掉。再看一下效果,就基本有所感受了

目的其实就是了解当有了这种情况的时候,怎么用简答方法,来完成秒杀的这个系统抽象的概念。
当库存为0时,就应该关掉购买按钮。

因为自己最近在看这些,写的也并不是很透彻。所以就简单的记录一下。欢迎评论区留言。

不喜轻喷

猜你喜欢

转载自blog.csdn.net/weixin_44266137/article/details/89215276