你们部署服务器是几台,并发量是多大;怎么进行模拟抢购的同一时间请求量是多少;怎么防止带刷(黄牛)如果说部署两台服务器 不同的进程 怎么实现乐观锁?

Django项目用到5台服务器。部署在2台上面,因为用户量比较少。

模拟抢购主要解决2个问题:
1.高并发对数据库产生的压力
2.竞争状态下如何解决库存的正确减少("超卖"问题)
对于第一个问题可以使用redis解决,避免对数据库的直接操作较少数据防护的查询压力。

对于“超卖”项目中使用的是“乐观锁”解决的。

防止黄牛代刷是个开放题目,下面提供几种思路:

对于一个账号,一次发起多个请求。
在程序入口处,一个账号只允许接受1个请求,其他请求过滤。实现方案,可以通过Redis这种内存缓存服务,写入一个标志位(只允许1个请求写成功,结合watch的乐观锁的特性),成功写入的则可以继续参加。

对于账号一次发送多个请求
可以检测机器的ip发送请求的频率,假如某个固定ip的频率特别高,就弹出验证码来减少请求的频率。

乐观锁的实现原理:
每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。
实现方式:可以在数据表中添加一个冗余字段,比如时间戳,在更新提交的时候检查当前数据库中数据的时间戳和自己更新前取到的时间戳进行对比,如果一致则OK,否则就是版本冲突 。
在这里插入图片描述
在这里插入图片描述
订单待支付时数据库中数据减少不?
在创建订单时数据库中的商品数据已经减少,在订单未支付时数据库中的商品数据是没变化,只是把此订单中商品的信息展示而已
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值