首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何设计一个秒杀系统

如何设计一个秒杀系统

作者头像
张哥编程
发布2024-12-13 19:06:25
发布2024-12-13 19:06:25
2380
举报
文章被收录于专栏:云计算linux云计算linux

如何设计一个秒杀系统

难度指数:4星级 考查频率:60%-70%

开发年限:5年左右 3-5

一.概念

秒杀系统:电商系统中,非常常见的一种业务模式,主要为了吸引用户、刺激留存和消费而设计的一种促销活动。 整点秒杀、单个商品秒杀等。

二.特征

1.瞬时流量非常大,过了这个秒杀时间,流量就结束了,所以,不能使用堆机器的方式来提高QPS,成本太高。

2.秒杀商品的库存一般有限的,比如说:1万个用户去抢10台IPHONE16,库存少而抢的人多,这种情况下服务器压力大。

3.秒杀时间还未来临,刷新量非常大,会导致服务器静态资源访问量剧增。10:00,9.58 9.59,服务器压力大。

三.准备工作

选商品,缓存:交互,库存数量、商品编号等等。

看一下是否可以抗的住预估的并发。

关键点:高并发、快响应; 防止超卖:防止恶意 刷;页面访问量大问题;秒杀开关的设计;订单后续业务逻辑设计异步;如果订单失败,补偿机制;服务降级。

四.解决方案*

1.高并发、快响应:C端产品,用户量很大,并发量高,提前做好压力测试。Redis热数据预加载、配置专门的MQ、前端页面静态化处理、CDN加速、宽带扩展、服务器集群的负载均衡。

2.防止超卖:精品,技术问题,库存负数。Redis,真正秒杀的时候,判断库存是否充足和扣减库存,两个操作,保证数据原子性,防止超卖。

3.防止恶意刷:一起机器人恶意抢单,机器人一直在刷,限流来解决该问题。用户ID策略、IP地址策略。不用担心由于限流而导致的用户体验问题。1人1s请求10次,一个ip10次。无效请求,无法达到服务器。

4.页面访问量过大:提前将页面静态化处理。资源静态化:url,直接找到静态资源,不和服务器做交互操作。+CDN就近分发策略,提高资源的响应速度和命中率。

5.秒杀入口:前端页面已经上线,为了限制一些无效的请求达到后端,按钮提前禁用,倒计时的时候,再开放,降低流量压力。

6.订单后续逻辑为异步:秒杀成功的订单放到MQ,后续的服务可以慢反馈给客户。

7.订单失败补偿机制:消费失败,抛出异常,重试,报警机制,实时监控预警。

8.服务降级:由于技术性或人为的问题,导致秒杀价格设置有问题。服务调用出现大问题的,异常 bug。出现到一个提示信息页面。

五.点评

三高:高并发、高性能、高可用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何设计一个秒杀系统
    • 一.概念
    • 二.特征
    • 三.准备工作
    • 四.解决方案*
    • 五.点评
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档