一 什么是秒杀
短时间(瞬时) 大量请求 买一个 库存少 商品
高并发 读写
用户量大 商品数量有限 最终创建订单量少
二 秒杀系统目标
稳 高可用 系统稳定
准 超卖
快 高性能
防 恶意请求
三 架构设计原则
轻量级设计-忌提前设计 + 过早设计
查询自己系统用户总数;是否100万以内 100万-2000千万 2000万级别以上的用户数
100万以内的用户设计---如何设计秒杀系统
100万-2000万级别用户设计--如何设计秒杀系统
2000万级别开外 -如何设计秒杀系统
四 前端解决方案
1 可以随意丢弃请求 直接返回失败
2 活动前置灰抢购按钮 防止产生无效流量
3 防暴击
4 资源静态化 cdn上传js 图片等文件
五 后端解决方案
1 令牌桶算法
2 ip访问限制
3 熔断降级
4 用户资格校验
5 用户黑名单
6 限流现成框架 gateway sentienl
六 问题解决方案-超卖 少卖 问题
?超卖
使用乐观锁进行库存变更 保证数据的安全性
update db set kucun = kuncun- mainum where kucun> 0
?少卖
使用定时任务 定时同步缓存的数据
使用定时任务 定期取消超时未支付的订单并恢复库存
七 问题解决方案 -高可用
?秒杀服务独立部署 、资源充足的情况下可用考虑针对秒杀活动单独部署一套
?分散流量 、抢购活动模块镜像跨地区部署
? 可以剥离无用逻辑 、比如考虑 使用优惠券、送积分、送虚拟币等场景剥离无用代码提高抢购性能
?后端服务集群化 采用 lvs nginx 等负载技术
?网关架构升级 zuul gateway nginx+lua kong 服务网格
八 架构设计图
本文暂时没有评论,来添加一个吧(●'◡'●)