秒杀本质

  • 业务上:是一场营销活动,具有明确的业务活动特点
  • 技术上:是一种主动DDos攻击,具备技术的不确定性和复杂度

    早期技术

  • 丢弃订单

    • 前端随机丢
    • 后端随机丢
  • 优化吞吐
    • 提前准备大量机器提升吞吐量
    • 后端服务化
    • 分库分表
  • 异步队列
    • 顺序处理
    • 超出队列长度直接失败
  • 内存分配
    • 如果遇到超大流量可以提前在每个机器节点内存分配好库存,流量分发后直接内存处理即可
  • 拆分扩展
    • 针对不同类型、商家、来源的商品,部署不同的前端促销集群,分散压力
    • 具体到每个不同的商品,并发不会太高
  • 服务降级

    • 根据业务特点,是秒杀占位成功就可以还是必须要出到票,很多都是只需同步告诉用户占位成功即可
    • 非核心服务可以先停掉
    • 销售不足或超卖
      • 销售不足可以从秒杀名单加一些补发或再来一轮秒杀返场
      • 超卖一般都会备足105%的货

        改进优化

  • 将促销活动从交易业务系统中剥离出来,成为独立的系统

    • 促销活动迭代非常快
    • 业务系统相对稳定
  • 秒杀业务本质上是一个特殊的折扣活动

    设计步骤

  1. 分析现状
    1. 明确具体需求,特别是要挖掘和明确非功能性需求
      1. 性能
      2. 稳定性
      3. 安全性
      4. 扩展性
    2. 分析可行性,明确可行性与相关技术指标
    3. 产出
      1. 需求文档
      2. 当前设计文档
      3. 可行性分析文档
  2. 寻找路径
    1. 实现整体方案设计
    2. 完成POC验证和关键技术选型
    3. 产出
      1. 设计方案初稿
      2. 关键技术选型报告
      3. POC场景设计文档和DEMO
      4. 测试报告
  3. 确定方案
    1. 根据分析设计出最终方案,并与各方达成一致
    2. 完善方案相关设计图和文档,成为项目研发蓝图
    3. 产出
      1. 设计方案终稿
      2. 组织会议同步和宣贯

        非功能性需求

  • 根据业务指标,估算并发指标,以此来反推非功能性需求
  • 实际工作中可以从以下入手
    • 根据线上压测,现有系统指标的测量和计算
    • 参考业内水平,设定并发流量的倍数
    • 建立基线
  • 脱离场景谈性能都是耍流氓

    系统设计文档

  • 传统软件开发一般都有概要设计和详细设计

  • 互联网相关系统不会这么复杂,关键在于描述清楚我们的系统
  • 组成部分
    • 需求分析
    • 整体设计
    • 系统架构图
      • 业务架构图
      • 技术架构图
      • 数据架构图
      • 部署架构图

文档清单.png

考虑因素

  • 体系化的稳定性建设、混沌工程
  • 架构团队与架构能力建设
  • 营销活动工具的平台化建设