首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
叙利亚俏悍妇
四川大学 Java
发布于江苏
关注
已关注
取消关注
秒杀
@Java抽象带篮子:
高并发下秒杀系统的设计
打个小广告 我的架构设计专栏:https://www.nowcoder.com/creation/manager/columnDetail/0ybvLm 我的java八股专栏:https://www.nowcoder.com/creation/manager/columnDetail/j8ZZk0 内有详细苍穹外卖话术哦! 欢迎订阅! 0.前言 秒杀系统主要有这几个特征: 瞬时间的流量特别高。过了秒杀的时间,流量就会瞬时结束 大批量用户同时请求极少数商品 在秒杀时间前,可能会有很多请求过来。比如在11点抢票开始,10点59分你可能会提前去刷新页面请求。 秒杀系统要注意的细节: 瞬时高并发 一般在秒杀时间点(比如:12点)前几分钟,用户并发量才真正突增,达到秒杀时间点时,并发量会达到顶峰。 但由于这类活动是大量用户抢少量商品的场景,必定会出现狼多肉少的情况,所以其实绝大部分用户秒杀会失败,只有极少部分用户能够成功。 正常情况下,大部分用户会收到商品已经抢完的提醒,收到该提醒后,他们大概率不会在那个活动页面停留了,如此一来,用户并发量又会急剧下降。所以这个峰值持续的时间其实是非常短的,这样就会出现瞬时高并发的情况。 0.架构设计 1.前端页面静态化+CDN 活动页面是用户流量的第一入口,所以是并发量最大的地方。 如果这些流量都能直接访问服务端,恐怕服务端会因为承受不住这么大的压力,而直接挂掉。 活动页面绝大多数内容是固定的,比如:商品名称、商品描述、图片等。为了减少不必要的服务端请求,通常情况下,会对活动页面做静态化处理。用户浏览商品等常规操作,并不会请求到服务端。只有到了秒杀时间点,并且用户主动点了秒杀按钮才允许访问服务端。 这样能过滤大部分无效请求。 但只做页面静态化还不够,因为用户分布在全国各地,有些人在北京,有些人在成都,有些人在深圳,地域相差很远,网速各不相同。 如何才能让用户最快访问到活动页面呢? 这就需要使用CDN,它的全称是Content Delivery Network,即内容分发网络。 使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。 什么是CDN? CDN,即内容分发网络(Content Delivery Network),是一种构建在现有网络基础之上的智能虚拟网络,旨在通过全球分布的边缘服务器为用户提供所需内容的就近获取服务。 CDN的全称是Content Delivery Network,即内容分发网络。CDN通过在全球各地部署边缘服务器,利用中心平台的负载均衡、内容分发和调度功能模块,使用户能够就近获取所需内容,降低网络拥塞,提高访问响应速度和命中率。CDN的关键技术包括内容的存储和分发技术,它通过将内容缓存到网络边缘的节点上,从而使用户在上网时不必直接访问源站,而是访问离他最近的一个CDN节点,实现快速获取数据。 什么是动静数据? 简单来说, “动态数据”和“静态数据”的主要区别就是看页面中输出的数据是否和URL、浏览者、时间、地域相关,以及是否含有Cookie等私密数据。比如说: 很多媒体类的网站,某一篇文章的内容不管是你访问还是我访问,它都是一样的。所以它就是一个典型的静态数据,但是它是个动态页面。 我们如果现在访问淘宝的首页,每个人看到的页面可能都是不一样的,淘宝首页中包含了很多根据访问者特征推荐的信息,而这些个性化的数据就可以理解为动态数据了。 2.秒杀按钮前端限流 通过前端的计时器与按钮状态来避免用户连续点击发送大量请求。 在秒杀系统中,为了避免用户连续点击秒杀按钮而发送大量请求,前端可以通过计时器结合按钮的状态控制来实现这一功能。下面是一个简化的步骤说明和示例代码,展示如何实现这一机制: 步骤说明 初始化秒杀按钮状态:秒杀按钮初始是可用的。 设置倒计时:使用JavaScript的setInterval函数来创建一个定时器,每隔一定时间(通常是1秒)更新倒计时。 禁用秒杀按钮:当用户点击秒杀按钮后,立刻禁用该按钮(按钮变灰),并开始倒计时。 倒计时结束:当倒计时结束时,重新启用秒杀按钮,并清除定时器。 3.读多写少(缓存+读写分离) 在秒杀的过程中,系统一般会先查一下库存是否足够,如果足够才允许下单,写数据库。如果不够,则直接返回该商品已经抢完。 由于大量用户抢少量商品,只有极少部分用户能够抢成功,所以绝大部分用户在秒杀时,库存其实是不足的,系统会直接返回该商品已经抢完。 这是非常典型的:读多写少 的场景。 缓存+读写分离 4.缓存问题 缓存击穿(缓存没有数据库有)缓存预热+分布式锁 比如商品A第一次秒杀时,缓存中是没有数据的,但数据库中有。虽说上面有如果从数据库中查到数据,则放入缓存的逻辑。 然而,在高并发下,同一时刻会有大量的请求,都在秒杀同一件商品,这些请求同时去查缓存中没有数据,然后又同时访问数据库。结果悲剧了,数据库可能扛不住压力,直接挂掉。 当然,针对这种情况,最好在项目启动之前,先把缓存进行预热。即事先把所有的商品,同步到缓存中,这样商品基本都能直接从缓存中获取到,就不会出现缓存击穿的问题了。 是不是上面加锁这一步可以不需要了? 表面上看起来,确实可以不需要。但如果缓存中设置的过期时间不对,缓存提前过期了,或者缓存被不小心删除了,如果不加速同样可能出现缓存击穿。 其实这里加锁,相当于买了一份保险。 解决方法 缓存预热+分布式锁 缓存穿透(数据库缓存都没有)布隆过滤器/对不存在元素进行缓存 如果
点赞 14
评论 2
全部评论
推荐
最新
楼层
还没有回复哦~
相关推荐
昨天 11:10
卓越里程_中台运营(准入职员工)
头部教育内推
国内头部教培25届秋招信息集合23-25届同学均可投递!目前大部分企业的秋招进入尾声,而教培行业仍有大量需求。教培老师的薪资待遇可观,offer率较高!在今年秋招难度上升的背景下,现阶段还未收获理想offer的同学们,欢迎投递,教培不失为性价比之选!学而思教育 综合年收入10~30万;每年2-6次涨薪,入职2~3年平均涨幅40%~50%全科类,素养类,竞赛类教师内推链接:https://app.mokahr.com/m/campus-recruitment/tal/148080?recommendCode=DS74UTFd&hash=%23%2Fjobs#/jobs内推码:DS74UT...
投递卓越教育等公司10个岗位 >
点赞
评论
收藏
分享
11-22 00:42
广东工业大学 C++
爽啦,校招今天收到了三个offer!
不过,心里也有些小失落,因为有些面试结果并不理想。比如金山办公的C++开发工程师岗位,结果显示我与职位不匹配,虽然他们说会把我的简历放入人才库,但还是有点沮丧。还有其他公司也给了我类似的反馈,虽然感谢他们的关注,但我还是希望能找到更合适的机会。希望接下来的面试能有更好的结果!
offer小狗:
转人工
牛客创作赏金赛
点赞
评论
收藏
分享
11-15 18:12
北京航空航天大学 算法工程师
美团开始作废offer了???
群里看到的,真的假的啊,团子动真格了?!#美团求职进展汇总# #校招#
ccgugu:
这是自己不接受offer 超时导致的啊,又不是美团主动违约
美团求职进展汇总
点赞
评论
收藏
分享
10-18 00:17
第一拖拉机制造厂拖拉机学院 Java
又来了哈
hr天天给我发消息😅
牛客279957775号:
铁暗恋
点赞
评论
收藏
分享
11-19 10:26
牛客运营
今年的校招薪资,有点猛啊。。。
25届秋招企业陆续开奖,今年的薪资和往年不太相同;今年可以说是“下猛药”、“沙峰了”(哈哈 牛牛这牛生没见过这么多钱🥺)前有拿了50+白菜价的我牛可乐的朋友后有连拿3个sp的我失散多年的兄弟更有总包90+,还在纠结其他offer的哥们我以为这只是个例,没想到这居然是常态。。。在【2024最新名企校招薪资爆料】的资料包里,就看到不少新出的逆天校招薪资。这个资料不收费,点击下方链接或扫码,邀请2位同学组团,即可一起免费领取!🔴 你将获得:✅ 大厂内部真人爆料,真实薪资更靠谱✅ 不同岗位薪资汇总,了解薪资更全面✅ 牛客独家整理出品,过了这村没这店拿offer,别犹豫,点击马上领取>>...
想润的芹菜人狠话不多:
转人工
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
从露宿街头到百万级种子轮融资——我的大学时代经历了什么
4.2W
2
...
C++选手秋招总结
1.4W
3
...
字节20多面终究一场空
1.3W
4
...
不装了!牛客就是OFFER判官
1.1W
5
...
华为电话oc了
9615
6
...
泡出来啦
8933
7
...
秋招圆满结束
7404
8
...
结束了,一切都结束了。。
6520
9
...
阿里云管培生开奖了
6154
10
...
11.26校招&实习招聘信息汇总
5252
正在热议
#
25届秋招总结
#
326814次浏览
3064人参与
#
上班苦还是上学苦呢?
#
71833次浏览
635人参与
#
百度开奖
#
182640次浏览
1139人参与
#
地方国企笔面经互助
#
4479次浏览
12人参与
#
如果有时光机,你最想去到哪个年纪?
#
21473次浏览
392人参与
#
选完offer后,你后悔学本专业吗
#
21795次浏览
158人参与
#
阿里云管培生offer
#
36835次浏览
422人参与
#
我的实习求职记录
#
6069505次浏览
83537人参与
#
如何一边实习一边秋招
#
996515次浏览
12662人参与
#
找工作时遇到的神仙HR
#
553161次浏览
3801人参与
#
入职第一天,你准备什么时候下班
#
21589次浏览
144人参与
#
招聘要求与实际实习内容不符怎么办
#
10750次浏览
277人参与
#
bilibili求职进展汇总
#
33138次浏览
354人参与
#
许愿池
#
214708次浏览
2534人参与
#
学历or实习经历,哪个更重要
#
53797次浏览
422人参与
#
实习工作,你找得还顺利吗?
#
247684次浏览
2906人参与
#
通信硬件薪资爆料
#
608581次浏览
5165人参与
#
海康威视求职进展汇总
#
400663次浏览
3408人参与
#
携程求职进展汇总
#
135637次浏览
930人参与
#
正在实习的你,几点下班
#
53236次浏览
396人参与
#
工作两年想退休了
#
53071次浏览
672人参与
#
如果再来一次,你还会学硬件吗
#
95167次浏览
1171人参与
牛客网
牛客企业服务