秒杀本质
- 业务上:是一场营销活动,具有明确的业务活动特点
-
早期技术
丢弃订单
- 前端随机丢
- 后端随机丢
- 优化吞吐
- 提前准备大量机器提升吞吐量
- 后端服务化
- 分库分表
- 异步队列
- 顺序处理
- 超出队列长度直接失败
- 内存分配
- 如果遇到超大流量可以提前在每个机器节点内存分配好库存,流量分发后直接内存处理即可
- 拆分扩展
- 针对不同类型、商家、来源的商品,部署不同的前端促销集群,分散压力
- 具体到每个不同的商品,并发不会太高
服务降级
将促销活动从交易业务系统中剥离出来,成为独立的系统
- 促销活动迭代非常快
- 业务系统相对稳定
- 秒杀业务本质上是一个特殊的折扣活动
设计步骤
- 分析现状
- 明确具体需求,特别是要挖掘和明确非功能性需求
- 性能
- 稳定性
- 安全性
- 扩展性
- 分析可行性,明确可行性与相关技术指标
- 产出
- 需求文档
- 当前设计文档
- 可行性分析文档
- 明确具体需求,特别是要挖掘和明确非功能性需求
- 寻找路径
- 实现整体方案设计
- 完成POC验证和关键技术选型
- 产出
- 设计方案初稿
- 关键技术选型报告
- POC场景设计文档和DEMO
- 测试报告
- 确定方案
- 根据业务指标,估算并发指标,以此来反推非功能性需求
- 实际工作中可以从以下入手
- 根据线上压测,现有系统指标的测量和计算
- 参考业内水平,设定并发流量的倍数
- 建立基线
-
系统设计文档
传统软件开发一般都有概要设计和详细设计
- 互联网相关系统不会这么复杂,关键在于描述清楚我们的系统
- 组成部分
- 需求分析
- 整体设计
- 系统架构图
- 业务架构图
- 技术架构图
- 数据架构图
- 部署架构图
考虑因素
- 体系化的稳定性建设、混沌工程
- 架构团队与架构能力建设
- 营销活动工具的平台化建设
