JavaWeb实战

Java高并发秒杀APi之高并发优化

2017-02-14  本文已影响0人  joshul
分析高并发

秒杀业务流程中 红色部分代表有高并发的点,绿色位置表示没有影响

Paste_Image.png

CDN 内容分发网络,CDN:(内容分发式网络)加速用户获取数据的速度


Paste_Image.png

1秒等于1亿纳秒

Paste_Image.png

大部分写的操作和核心操作无法使用CDN
不可能在缓存中减库存,你在redis中减库存,那么用户也可能通过缓存来减库存,这样库存会不一致,所以要通过mysql的事务来保证一致性
比如一个商品所有人都在抢,那么会在同一时间对数据表中的一行数据进行大量的update set操作


Paste_Image.png

秒杀地址接口优化
一致性维护
可以设置缓存超时时间,到了一定时间,再去mysql数据库取
可以主动更新,mysql数据服务更新,缓存也能同时更新

Paste_Image.png

高并发解决方案

Paste_Image.png

4.Mysql事务行锁串行等待执行,一个事务提交或回滚,下一个事务才能执行。

Paste_Image.png

持有行级锁是在update上,释放锁是在commit(spring控制),也就是锁持有时间是update和commit之间的时间。这个过程网络请求越少,锁持有时间就越短。

Paste_Image.png

-- 存储过程 (只在银行被大量的时候,互联网公司用的很少,但是在秒杀中用)
-- 1.存储过程优化: 事务行级锁持有的时间
-- 2.不要过渡依赖存储过程
-- 3.简单的逻辑可以应用存储过程
-- 4.QPS:一个秒杀但6000/qps

Paste_Image.png

常用秒杀部署

Paste_Image.png
上一篇下一篇

猜你喜欢

热点阅读