“秒杀”是如何实现的?

2020-09-18科技508

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

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

充分利用缓存

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

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

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

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

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

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

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

相关文章

伺服阀应用于哪些领域?

不同领域对伺服的定义是有差异的,机械工程中对伺服的定义可以这样理解: 伺服系统—是使物体的位置、方位、状态等输出被控量能够跟随输入目标值(或给定值)的任意变化的自动控制系统。 伺服的主要任务是按控制命令的要求,对功率进行放大、变换与调控等处理,使驱动装置输出的力距、速度和位置控制得非常灵活方便。 伺...

创建限制更新数据的触发器,限制将SC表中不及格学生的成绩改为及格(可以帮我解释一下以下代码吗?)?

给你加了注释createtriggertri_grade--创建一个叫tri_grade的触发器onscforupdate--在sc表上update时触发asifupdate(grade)--如果修改的是grade字段ifexists(select*frominsertedjoindeleted--...

输入身份证号码可以查到开房记录吗?

知道一个人的身份证号码,在派出所的户籍系统里是可以查到开房记录的。具体来讲:1、只要在宾馆酒店入住时用身份证进行了登记,登记进入管理网络,就可以在在派出所的居民身份系统中查到开房记录。2、不光可以查到开房记录,可以查到的内容还有很多,比如人员、住宿时间、住宿的宾馆等。3、但是,只有涉及到犯罪的或者有...

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

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

阿黛尔和蕾哈娜,这两位谁更强?

谢邀。不过回答问题前,不得不说小编问这种问题实在弱智,你问谁更强,我只能说文无第一,武无第二,又不是体育比赛谁更快谁更准谁就更强,所以这种问题不会有答案。也许有人会拿专辑卖出数据,国际音乐节获奖次数说事,这两位都是目前最火的当红女歌手,唱功都了得,获奖无数,而且一个唱流行,R&B,一个唱情歌...

反馈是什么意思呢?

反馈fǎnkuì[feedback] 泛指发出的事物返回发出的起始点并产生影响反馈 反馈(feedback)又称回馈,是控制论的基本概念,指将系统的输出返回到输入端并以某种方式改变输入,进而影响系统功能的过程。反馈可分为负反馈和正反馈。前者使输出起到与输入相反的作用,使系统输出与系统目标的误差减小,...

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

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

学大数据之后能做什么工作?

1、数据挖掘工程师 做数据挖掘要从海量数据中发现规律,这就需要一定的数学知识,最基本的比如线性代数、高等代数、凸优化、概率论等。 PS:经常会用到的语言包括Python、Java、C或者C++,有些人用Python或者Java比较多。有时用MapReduce写程序,再用Hadoop或者Hyp来处理数...

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

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

知名酒店泄露5百万用户数据,上一次是近4亿开房记录,怎么看?

查实了一下事件,3月31日CNET报道,万豪酒店宣布,发生了一起数据泄露事件,近520万房客的个人信息被泄露,可能包含姓名、地址、email、电话号码、生日,还有部分用户的房间偏好等详细信息。 一,原因调查万豪同时公布说,正在对事件进行调查,并且已经发送邮件通知受影响的房客,将为他们免费提供一年的个...

曾经塞班系统为何中国不能买来加以改进,或许也能做到和苹果一样?

在中国很多企业都开始研究系统了,无论是电脑系统还是手机系统,以及未来服务很多终端的系统,这都是中国的自主化研发力量的体现,首先我们不说技术的方面的问题,就说可以引进来进行改进,那么以后做好了也会落下话柄; 中国企业之所以要做系统的目的第一方面不受制于人,做属于自己的科技系统,也不至于需要企业通过大量...

苹果手机贵在哪里?

简单阐述下我认为有两大块 一.看得见的 包含 牛*硬件、较贵用料、顶级的工业设计、稳定顺畅的ios系统、顶级品牌等 首先,1.苹果A系列的cpu一直是行业标杆,从未被超越(不服跑个分)。芯片根据自家ios系统定制化设计。搭配使用自然是双剑合璧,所向睥睨,这也是为什么苹果手机一代产品可以用几代的原因。...