“秒杀”是如何实现的?

2020-09-18科技474

秒杀系统难做,是因为库存有限,很多人会在集中的时间内读写有限的数据,在短时间内,系统会面临成千上万倍的流量进入。那么如何能做好秒杀系统呢?我认为核心思想有这么两点:

将请求尽量的在上游环节就拦截住(不要轻易到数据库这一级)

充分利用缓存

那么这两点如何实现呢,下面详细说说:

最上层是客户端层,常见的都是浏览器访问。点击一次【秒杀按钮】,然后再点一次【秒杀按钮】,那么是访问了两次后端系统么?如果用户手速快一些的话,或者用第三方插件不停的点击,那么岂不是多出来很多请求。从产品层面,我们会设置点击一次按钮后,将按钮置灰,从技术角度,我们可以通过JS控制几秒内只能提交一次请求。看,这就是“将请求尽量的在上游环节就拦截住”。

当然客户端层做限制,对于在座的程序猿们都是小意思,因为一抓包,请求长什么样子一清二楚,然后写个脚本,循环调用就好了;为了防止这样的情况发生,后端的服务需要做去重的工作。比如按照用户名去重,在N秒内,只允许1个请求访问进来,然后做页面缓存;比如10秒内发送了一万次请求,其中1次请求访问成功并返回了页面,将这个页面进行缓存,剩余9999次请求直接返回这个缓存页面。

再往下走,10秒内一个客户只有一次请求进来,但是如果同时有一百万个客户,那么这10秒内也有有一百万次访问,那么如何应对呢?用【消息队列】,所有的请求过来,都排队吧,每次只让有限的请求去访问数据。

当然访问数据也不是直接去读写数据库,这里还有一层数据缓存,比如可以使用Memcached或者Redis缓存库存剩余,通常在秒杀系统中,这个“库存”可以是粗粒度的,也就是说这个数字可以是不准确的,客户关心的是买到还是买不到,而不会关心剩余数量到底是20件还是10件;数据读操作也可以放在缓存中,再由缓存和数据库做数据同步。

上面几步已经拦截了大多数的请求,到DB这一层的时候,基本上没有什么压力了。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

相关文章

腾讯tos系统好吗?

Tencent OS(以下简称TOS),是腾讯官方适配的安卓手机系统,并基于TOS为智能手表、微游戏机、虚拟现实产品三大智能硬件提供了系统解决方案。 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。...

430人跌出10亿美元富豪榜,雷军损失300亿,张近东落榜,你怎么看这届富豪榜?

对于我们这些平头老百姓而言,总喜欢去聊聊这些富豪们有多少钱了,又谁谁谁成为首富了,但是我们总在聊富豪榜,那么也首先要知道富豪榜都是怎么计算出来的。 富豪榜是如何计算的呢?福布斯排行榜从2003年开始,每年都会更新一次中国的富豪排行榜。而为了这每年更新的排行榜,福布斯的编辑团队中有100人会专注于手机...

怎么对噪声信号进行频谱分析,具体步骤?

具体为采集的数据选择一定的长度也就是点数加汉宁窗后进行FFT,如果不加汉宁窗则默认为加了矩形窗,不过这样会造成部分频谱泄露,当然汉宁窗也会泄露,但泄露会大大降低。 FFT后得到这帧信号的数字频谱,然后根据你信号的频率范围把其他的频率下的幅值统统清零,然后在把这帧数据IFFT(傅里叶反变换),得到时域...

手机根目录下的的文件夹和文件是干什么的?

作用: 1.res:资源文件。 2.drawable:布局文件。 3.layout:布局文件。 4.anim:动画效果文件。 5.values:取值、字符串等。 6.src:代码,至于src内部的目录名称,取决于具体项目结构。 7.libs:库文件。 安卓手机: 安卓(Android)...

请问电脑开机显示warning是什么意思?

  电脑开机提示Warning一般是你系统有什么漏洞可能会造成什么问题  解决方法:   1、进入BIOS,选择BOOT栏,将First Boot Device 设成HDD-O,或者你的硬盘型号,只要不选择DVD/CD什么的就对了,然后在这个栏里面找FLOOPY 选项,全部选择否(disable)。...

什么是基金踩雷?

有一个数据颇值得关注,截至目前,今年以来上市公司债券违约的数量和总体违约额已经超过了去年全年。 Wind 数据显示,2019 年截至 12 月 3 日,有 159 只、1256.98 亿规模债券违约,而 2018 年全年,这两个数字分别是 125 只和 1209.61 亿。 在这个背景下,风险也在集...

有没有女主不崩人设的快穿推荐?

1.《穿成反派的锦鲤亲妈[快穿]》作者:三生思量 穷癌晚期的黎夏重生后发现自己成了一个花钱系统选中的锦鲤。系统主线任务:穿越到各个世界成为反派他最有钱的亲妈,扶正反派的三观,防止儿子黑化。系统支线任务:系统提供无限量资金,花钱打脸,逆转人生!本文为神壕流爽文,该文剧情紧凑,文风轻松,代入感极强,值得...

地震真的可以预警吗?

根据中国地震台网测定,确认本月17日22时55分在四川省宜宾市长宁县附近发生了6级地震,震源深度16千米,值得注意的是,在地震发生期间,四川多地通过警报,电视,手机等方式进行了提前61秒的地震波预警,给人员疏散以及规避提供了宝贵时机。 这正是成都高新减灾研究所建立的大陆地震预警网系统在发挥作用,其原...

塞班3和塞班5哪个用着更不错

并没有所谓的塞班5的说法,你说的应该是S60V5的操作系统吧。而塞班3是诺基亚发布了不久的新系统,旗下也只有NOKIA新发布的N8-00这一部旗舰机器,而且也还没有开卖。不过你说的塞班3或许是S60V3系统吧,这个系统应该是目前软件最为丰富的一个智能平台了。至于你说的S60V5对软件的兼容问题是没问...

相互保分摊越来越多,大家觉得还有必要加入下去么?里面的钱到底如何了?

先来说说一些数据,全国每天确诊癌症约万例,全国人口14亿,加入相互保7000万人,换算下来,这七千万人,每天约有500人确诊。相互保半月一次,那就是7500人。因为加入相互保人群年轻生病几率小,刨去一半,还有3750人,再刨去病情轻,或者不符合如实告知等要求的,再减一半,还有约1800人。而现阶段支...

司马南,胡锡进…们,为何不公开谈谈许可馨?单怼方方算啥意思?

要说,许可馨和方方的家底都厉害(许可馨属于猜测),方方不用猜测,方方家族熬过国共两朝,依然满门高官厚禄。 猜测一: 许可馨家族确实已经厉害到了没人敢说的地步。所以司马南、胡锡进不敢说。 猜测二: 许可馨主要是攻击网友,和网友撕逼,并没有直接跟政府和宣传系统的具体个人对线,司马南、胡锡进对线许可馨,也...

成都广播电视大学怎么样?

简介:成都广播电视大学创办于1979年,是由教育部批准建立的省级广播电视大学,属独立建制的公办高等学校,行政上接受成都市人民政府的领导和教育行政部门的管理,教学业务上接受中央广播电视大学的指导。 2009年12月,按照市委办公厅和市政府办公厅《关于依托成都电大建立成都社区大学的通知》要求,成都社区大...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。