大量访问高并发的应对(主要访问大量访问数据库崩溃)
1.Redis预减库存减少数据库访问
2.map标记减少Redis访问屏蔽一定的请求减轻缓存压力
3.消息队列异步处理
流量削峰 开始抢购的瞬间 大量并发进入,先将请求入队,若队列满了,那么舍弃再入队的请求返回一个异常
先给前端一个数据返回表示排队中,再进行后续的业务处理,前端轮询最后成功或者失败在显示业务结果
4.数据库运行的问题,传统的sql写成存储过程(直接调用),加速sql
5.数据库里锁及唯一索引来处理抢的问题。
**
页面加载速度
**
页面静态化,缓存在客户端
CDN服务器
在上表中列出来的解决方案中看出,利用 页面静态化、数据静态化,反向代理 等方法可以避免 带宽和sql压力 ,但是随之而来一个问题,页面抢单按钮也不会刷新了,可以把 js 文件单独放在js服务器上,由另外一台服务器写 定时任务 来控制js 推送。
另外还有一个问题,js文件会被大部分浏览器缓存,我们可以使用xxx.js?v=随机数 的方式来避免js被缓存