专业的编程技术博客社区

网站首页 > 博客文章 正文

秒杀系统架构设计(终极版本)(秒杀系统原理)

baijin 2024-08-11 13:45:23 博客文章 17 ℃ 0 评论

一 什么是秒杀

短时间(瞬时) 大量请求 买一个 库存少 商品

高并发 读写

用户量大 商品数量有限 最终创建订单量少


二 秒杀系统目标

稳 高可用 系统稳定

准 超卖

快 高性能

防 恶意请求

三 架构设计原则

轻量级设计-忌提前设计 + 过早设计

查询自己系统用户总数;是否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 服务网格

八 架构设计图

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表