高并发解决方案

1、页面缓存

第一次加载就把html存在redis中,下次先从缓存中取页面。

2、URL缓存

和页面缓存类似,是拿到url,然后把获取的页面存到缓存中。

3、对象缓存

把对象存在缓存中,注意的是在修改了对象后同时要修改缓存。

4、页面静态化

就是把页面缓存在浏览器中,直接从本地取页面,节省了流量(vue.js等)。

5、接口优化

  • redis预减库存减少数据库访问
    • 系统初始化就把商品数量加载到redis
    • redis预减库存,如果库存不足就直接返回秒杀失败。
    • 如果预存有,就请求入队,返回排队中。
    • 请求失败,生成订单,减少库存。
    • 客户端轮询,是否秒杀成功。
  • 内存标记减少Redis访问
  • 请求先入队缓冲,异步下单,增强用户体验
  • 分库分表(mycat)

6、安全优化

  • 接口地址隐藏

    思路:秒杀开始之前,先去请求接口获取秒杀地址

    • 接口改造,带上PathVariable参数
    • 添加生成地址的接口
    • 秒杀收到请求,先验证PathVariable
  • 数学公式验证码

    • 防止机器人恶意访问
    • 缓冲并发压力
  • 接口限流防刷(限制每个ip在某个时间只能访问n次)

你可能感兴趣的:(高并发解决方案)