(只会生成一笔订单)
(并发的时候,有可能2个用户同时执行到这行代码)
队列:先不处理请求,而是放入到队列,然后系统每次会从队列中取出一条来处理
负载均衡:用更多的机器去扛请求
接入层限流:利用ngnix限流,只转发部分数据给到系统 (上面的都是要处理,这里只有部分数据需要处理,因为只会生成一个订单)
通过锁数据实现,不释放的话,对mysql性能有影响
乐观锁,没有给mysql加锁,只是利用了sql语句中的版本号去控制,这样另外sql语句再执行,是不会成功的
这些都是数据库层面的锁,如果并发到达10万左右,对于数据库来说,是有点吃不消的
瓶颈:并发低了,一次只能处理一条。类似公路上只允许一辆车走
每个请求相当于一个线程,系统会分配线程锁 只允许一个线程执行,其他的在等待 弊端是也会降低并发量 优点是:只有运行库存时,才会锁住
通过watch去监视sale字段,如果发生改变,则回滚
通过版本控制 不锁资源
以上方法 都是经过php,php也是有性能瓶颈,并发大的时候,也是会受到影响
1.安装压力测试工具 jemeter
模拟1秒内下1000个单
4内存的服务器 吞吐量400每秒
2.安装ngnix+lua扩展
实操:
1)限流:
桶里拒绝的请求是不会分发到php里面的
2)秒杀超卖: