业务大致流程:
系统时间获取
1. 原因
1.1 用户会大量刷新页面
1.2 CDN存放的是大量的静态页面,静态css,js资源
Tips:CDN的理解:内容分发网络
1.2.1 用来加速用户获取数据的系统上面
1.2.2 部署用户最近的网络节点上面-城域网,主干网络
1.2.3 命中CDN不需要访问后端服务器
1.2.4 互联网自己搭建或租用
- 获取系统时间的接口不要进行优化
- 秒杀地址接口的分析
- 1.表现
- 1.1 无法使用CDN的缓存
- 1.2 适合服务器端的缓存:redis等
- 1.3 一致性维护成本比较低
2.原因
2.1 cdn寄存在网络节点上面,然而秒杀接口的数据又是动态的,所以无法进行cdn的缓存
3.解决方法
4.优弱势分析
4.1 mysql的弱势
4.1.1 java控制事务行为分析—串式循环,等待行锁的操作
4.2 网络延迟
4.3 GC的延迟
5.解决方案点
5.1 行级锁在commit之后释放
5.2 优化方向减少行级锁持有时间
5.3 具体方案
5.3.1 把客户端的逻辑放在mysql服务器,避免网络延迟和GC的影响
5.3.2 定制mysql的方案:update /auto_commit/ 需要修改mysql源码
5.3.3 使用存储过程:整个事务在mysql端进行完成
- 总结
- 6.1 前端控制:暴露接口,防按钮重复
- 6.2 动静态数据:cdn缓存,后端缓存
- 6.3 事务竞争优化:减少事务锁时间
閱讀更多 Java程序猿鼓勵師 的文章