Java高并发秒杀APi之高并发优化
2017-02-14 本文已影响0人
joshul
分析高并发
秒杀业务流程中 红色部分代表有高并发的点,绿色位置表示没有影响
Paste_Image.pngCDN 内容分发网络,CDN:(内容分发式网络)加速用户获取数据的速度
Paste_Image.png
1秒等于1亿纳秒
Paste_Image.png大部分写的操作和核心操作无法使用CDN
不可能在缓存中减库存,你在redis中减库存,那么用户也可能通过缓存来减库存,这样库存会不一致,所以要通过mysql的事务来保证一致性
比如一个商品所有人都在抢,那么会在同一时间对数据表中的一行数据进行大量的update set操作
Paste_Image.png
秒杀地址接口优化
一致性维护
可以设置缓存超时时间,到了一定时间,再去mysql数据库取
可以主动更新,mysql数据服务更新,缓存也能同时更新
高并发解决方案
Paste_Image.png4.Mysql事务行锁串行等待执行,一个事务提交或回滚,下一个事务才能执行。
Paste_Image.png持有行级锁是在update上,释放锁是在commit(spring控制),也就是锁持有时间是update和commit之间的时间。这个过程网络请求越少,锁持有时间就越短。
Paste_Image.png-- 存储过程 (只在银行被大量的时候,互联网公司用的很少,但是在秒杀中用)
-- 1.存储过程优化: 事务行级锁持有的时间
-- 2.不要过渡依赖存储过程
-- 3.简单的逻辑可以应用存储过程
-- 4.QPS:一个秒杀但6000/qps
常用秒杀部署
Paste_Image.png