-
【为什么要单独获取系统时间?】
静态资源会部署到CDN上,访问detail页,静态资源等不需要访问秒杀系统,因此要单独做一个请求获取系统时间。
【CDN的理解】
大部分的视频加速完全依赖于CDN
查看全部 -
【流程图】
红色表示可能会出现高并发的点,绿色表示无影响。
【详情页】可通过CDN优化。
大部分的视频加速完全依赖于CDN
为什么要单独获取系统时间?静态资源会部署到CDN上,访问detail页,静态资源等不需要访问秒杀系统,因此要单独做一个请求获取系统时间。
【获取系统时间不用优化,因为很快】
【秒杀地址暴露接口分析】
无法使用CDN缓存,(因为秒杀地址是会变化的)
适合服务器端缓存:redis等
一致性维护成本低:超时穿透/主动更新
【秒杀操作接口优化分析】优化方式,减少事务锁时间。
无法使用CDN缓存,
后端缓存困难:库存更新一致性问题
一行数据竞争:热点商品
查看全部 -
这一章讲的不错
查看全部 -
大型系统架构
查看全部 -
CDN:Content Delivery Network,即内容分发网络
WebServer一般不直接对外访问,之前都会放置Nginx,Nginx是一个集群化的,部署在多个服务器上,用来做我们的Http服务器。同时他还会把后端的Tomcat,Jetty来做反向代理。
Redis:做服务器端的缓存,利用Redis提供的API来达到热点数据的快速存取的过程。
MySql:借助MySQL事务来达到秒杀事务的一致性和完整性
查看全部 -
秒杀操作的简单优化:更新库存的是热点操作,会出现行级锁,而插入购买记录的行为没有行级锁。可以先插入购买明细,可以避免因重复秒杀带来的不必要的更新库存操作,减少不必要的行级锁的占用。然后再去更新库存。这样,行级锁的占用时间可以节省一半(反正是节省了)
查看全部 -
rowLock: 行级锁,锁的粒度最小,并发度最高,加锁慢
查看全部 -
秒杀优化总结
查看全部 -
如何放到MySQL服务端
查看全部 -
如何判断Update更新库存成功?
查看全部 -
异地机房网络延迟计算
查看全部 -
mysql 单条update qps 每秒40000+
Java 控制事务行为分析
数据库锁/网络延时/GC
行级锁在Commit之后释放 --如何减少行级锁的持有时间
优化思路:
把客户端逻辑放到Mysql服务端 避免网络延迟和GC影响
----使用存储过程
******** 优化总结 ********
前端控制:暴露接口 按钮防重复
动静态分离:CDN缓存,后端缓存
事务竞争优化:减少事务锁时间
查看全部 -
java控制事务行为分析——串行操作
查看全部 -
架构成本分析
查看全部 -
其他秒杀方案分析
查看全部
举报