你们部署服务器是几台,并发量是多大;怎么进行模拟抢购的同一时间请求量是多少;怎么防止带刷(黄牛)如果说部署两台服务器 不同的进程 怎么实现乐观锁?
2019-04-03 22:22
1416 查看
Django项目用到5台服务器。部署在2台上面,因为用户量比较少。
模拟抢购主要解决2个问题:
1.高并发对数据库产生的压力
2.竞争状态下如何解决库存的正确减少("超卖"问题)
对于第一个问题可以使用redis解决,避免对数据库的直接操作较少数据防护的查询压力。
对于“超卖”项目中使用的是“乐观锁”解决的。
防止黄牛代刷是个开放题目,下面提供几种思路:
对于一个账号,一次发起多个请求。
在程序入口处,一个账号只允许接受1个请求,其他请求过滤。实现方案,可以通过Redis这种内存缓存服务,写入一个标志位(只允许1个请求写成功,结合watch的乐观锁的特性),成功写入的则可以继续参加。
对于账号一次发送多个请求
可以检测机器的ip发送请求的频率,假如某个固定ip的频率特别高,就弹出验证码来减少请求的频率。
乐观锁的实现原理:
每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。
实现方式:可以在数据表中添加一个冗余字段,比如时间戳,在更新提交的时候检查当前数据库中数据的时间戳和自己更新前取到的时间戳进行对比,如果一致则OK,否则就是版本冲突 。
订单待支付时数据库中数据减少不?
在创建订单时数据库中的商品数据已经减少,在订单未支付时数据库中的商品数据是没变化,只是把此订单中商品的信息展示而已
相关文章推荐
- rsync 实现文件同步 (重要数据通过rsyncr把数据同步到不同的两台服务器上,这样可以防止服务器的硬盘故障导致数据丢失) 客户端同步时如果要排某个目录
- 如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
- responseXML 属性 如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性: 请求 books.xml 文件,并解析响应:
- 不为客户连接创建子进程的并发回射服务器( select实现 )
- [置顶] 两台一级域名相同二级域名不同的服务器,怎么共享session
- 1.1和2.0下进行https请求的不同实现
- 【JSONP】通过nodejs做服务器简单模拟实现跨域请求
- 实现根据教育网IP/公网IP进行不同服务器转向(学习)
- 1.1和2.0下进行https请求的不同实现
- 单进程多线程并发服务器实现
- jmeter模拟不同ip并发请求
- php+redis实现高并发模拟下单、秒杀、抢购操作
- 用TCP/TP进行网际互连(5) ———— 多进程和多线程实现服务器端的并发处理
- [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问
- 怎么实现用户匿名访问web,但数据库要用Windows集成验证方式(数据库和web服务器分别在两台机器上)
- jmeter模拟不同ip并发请求
- 不为客户连接创建子进程的并发回射服务器( poll实现 )
- .net2005和2003下进行https请求的不同实现
- 怎么实现防止被其他进程杀掉
- Linux TCP协议使用进程实现并发服务器