秒杀系统的必要性
- 目的:使用低价稀缺商品吸引流量,增加新用户。
- 商业策略:即使亏本销售,也能通过吸引的人气带来长期客户。
大平台对秒杀系统的重视
- 流量区分:区分爆款和普通商品流量,避免系统崩溃。
- 独立系统:京东、阿里巴巴等建立独立的秒杀系统。
秒杀系统设计的意义
- 技能必备:对IT技术人员而言,设计秒杀系统是必备技能。
- 应用广泛:高并发设计思路适用于其他系统。
秒杀业务分析
- 大型促销:如618、双11等,秒杀是关键手段。
- 业务特点:了解业务流程,优化系统设计。
秒杀系统挑战
- 瞬时流量:高并发流量可能导致系统瘫痪。
- 热点数据:抢购同一商品导致存储系统热点问题。
- 刷子流量:程序频繁发送请求,增加系统负担。
秒杀系统架构设计
- DNS:域名解析。
- Nginx:反向代理、负载均衡、静态资源服务。
- Web服务:业务逻辑处理。
- RPC服务:内部基础服务调用。
秒杀系统具体实现
- 活动数据展示:如倒计时、活动状态。
- 结算页提供:展示商品抢购信息。
- 下单服务:生成订单或传递数据至下游服务。
大厂秒杀系统架构特点
- CDN使用:减轻域名负担,快速分发静态资源。
- Nginx角色扩大:前置Web网关,业务逻辑校验。
秒杀业务流程
- 创建活动:后台设置商品、时间、库存。
- 活动启动:信息写入Redis。
- 用户准备:进入商品详情页。
- 点击抢购:进入秒杀结算页。
- 结算页面:用户更改信息,提交订单。
- 支付跳转:根据支付方式跳转。
秒杀系统设计要点
- 隔离策略:业务、应用、数据隔离。
- Nginx优化:使用OpenResty处理业务逻辑。
- 商详页静态化:减少后端服务压力。
- 库存获取:Nginx直接访问Redis。
流量管控
- 前期管控:如“预约+秒杀”方式。
- 削峰:无损(验证码、问答题)和有损(限流)削峰。
- 限流:Nginx限流、应用/服务层限流。
总结
- 技术挑战:处理瞬时大流量。
- 设计方案:隔离策略、静态化、查询优化、流量控制。
其他问题
- 库存原子扣减:确保库存更新一致性。
- 数据热点:解决读写请求集中问题。
- 防刷与风控:保护系统免受恶意攻击。
- 容灾:系统故障应对策略。