如何优化一个秒杀项目?( 二 )

  • ctrl+F5或commond+shift+R刷新:去掉cache-control和协商头,强制刷新
  • ? CDN自定义缓存策略
    • 可自定义目录过期时间
    • 可自定义后缀名过期时间
    • 可自定义对应权重
    • 可通过界面或api强制cdn对应目录刷新(非保成功)

    如何优化一个秒杀项目?

    文章插图
     
    2.静态资源部署策略css,js,img等元素使用带版本号部署,例如a.js?v=1.0不便利且维护困难
    css,js,img等元素使用带摘要部署,例如a.js?v=45edw存在先部署html还是先部署资源的覆盖问题(先后问题)
    css.js,img等元素使用摘要做文件名部署,例如45edw.js,新老版本并存且可回滚,资源部署完后再部署html(==好==)
    对应静态资源保持生命周期内不会变,max-age可设置的很长,无视失效更新周期
    html文件设置no-cache或较短max age,以便于更新
    html文件仍然设置较长的max age,依靠动态的获取版本号请求发送到后端,异步下载最新的版本号的html后展示渲染在前端
    动态请求也可以静态化成json资源推送到cdn上 依靠异步请求获取后端节点对应资源状态做紧急下架处理
    可通过跑批紧急推送cdn内容以使其下架等操作
    3.全页面静态化定义:在服务端完成html,css,甚至js的load渲染成纯html文件后直接以静态资源的方式部署到cdn上
    phantomjs应用---类似于爬虫的原理
    修改需要全页面静态化的实现,采用initView和hasInit方式防止多次初始化
    编写对应轮讯生成内容方式
    将全静态化页面生成后推送到cdn
    问题5:交易优化技术之缓存库存扣减库存缓存化
    (1)活动发布同步库存进缓存
    (2)下单交易减缓存库存
    异步同步数据库------异步消息队列rocketmq
    分布式事务
    如何优化一个秒杀项目?

    文章插图
    库存数据库最终一致性保证
    方案:
    (1)引入库存操作流水
    (2)引入事务性消息机制
    问题6:流量削峰技术秒杀令牌的原理和使用方式
    • 秒杀接口需要依靠令牌才能进入
    • 秒杀的令牌由秒杀活动模块负责生成
    • 秒杀活动模块对秒杀令牌生成全权处理,逻辑收口
    • 秒杀下单前需要先获得秒杀令牌
    【如何优化一个秒杀项目?】秒杀大闸的原理和使用方式
    • 依靠秒杀令牌的授权原理定制化发牌逻辑,做到大闸功能
    • 根据秒杀商品初始库存颁发对应数量令牌,控制大闸流量
    • 用户风控策略前置到秒杀令牌发放中
    • 库存售馨判断前置到秒杀令牌发放中
    队列泄洪的原理和使用方式
    • 排队有些时候比并发更高效
    • 依靠排队去限制并发流量
    • 依靠排队和下游拥塞窗口程度调整队列释放流量大小
    本地OR分布式?
    • 本地:将队列维护在本地内存中--负载不均衡
    • 分布式:将队列设置到外部redis内
    可以使用外部的分布式,如果出现了性能问题,可以使用降级策略,切换到本地 。
    问题7:防刷限流为什么要进行限流?
    • 流量远比你想的要多
    • 系统活着比挂了要好
    • 宁愿只让少数人能用,也不要让所有人不能用
    限流方案
    • 限并发
    • 令牌桶算法(互联网公司常用)
    • 漏桶算法

    如何优化一个秒杀项目?

    文章插图
     
    限流力度
    • 接口维度
    • 总维度---比接口的低20%左右
    限流范围
    • 集群限流:依赖redis或其他的中间件技术做统一计数器,往往会产生性能瓶颈
    • 单机限流:负载均衡的前提下单机平均限流效果更好
    传统防刷
    • 限制一个会话(session_id,token)同一秒钟/分钟接口调用多少次:多会话接入绕开无效
    • 限制一个ip同一秒钟/分钟接口调用多少次:数量不好控制,容易误伤
    黄牛为什么难防
    • 模拟器作弊:模拟硬件设备,可修改设备信息
    • 设备牧场作弊:工作室里一批移动设备
    • 人工作弊:靠佣金吸引兼职人员刷单
    防刷策略
    1.验证码
    2.排队,限流,令牌均只能控制总流量,无法控制黄牛流量
    3.不同端进行隔离,使用代码混淆,HTTPs等技术
    4.设备指纹
    ◆采集终端设备各项参数,启动应用时生成唯一设备指纹
    ◆根据对应设备指纹的参数猜测出模拟器等可疑设备概率


    推荐阅读