java 高并发操作实例-秒杀

业务大致流程:
java 高并发操作实例-秒杀_第1张图片
系统时间获取
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.1 无法使用CDN的缓存
    1.2 适合服务器端的缓存:redis等
    1.3 一致性维护成本比较低

2.原因
2.1 cdn寄存在网络节点上面,然而秒杀接口的数据又是动态的,所以无法进行cdn的缓存
3.解决方法
java 高并发操作实例-秒杀_第2张图片
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端进行完成

  1. 总结
    6.1 前端控制:暴露接口,防按钮重复
    6.2 动静态数据:cdn缓存,后端缓存
    6.3 事务竞争优化:减少事务锁时间

本文是将:慕客网所学总结记录下。具体内容 可以去慕客网查看。谢谢。

你可能感兴趣的:(j2ee)