- 如何进行下单前置检查
如果超过10条,直接返回已结束页面给用户;
如果未超过10条,则用户可进入填写订单及确认页面;
已超过秒杀商品总数,返回已结束页面给用户;
未超过秒杀商品总数,提交到子订单系统;
- 秒杀一般是定时上架
该功能实现方式很多 。不过目前比较好的方式是:提前设定好商品的上架时间,用户可以在前台看到该商品,但是无法点击“立即购买”的按钮 。但是需要考虑的是,有人可以绕过前端的限制,直接通过URL的方式发起购买,这就需要在前台商品页面,以及bug页面到后端的数据库,都要进行时钟同步 。越在后端控制,安全性越高 。
定时秒杀的话,就要避免卖家在秒杀前对商品做编辑带来的不可预期的影响 。这种特殊的变更需要多方面评估 。一般禁止编辑,如需变更,可以走数据订正多的流程 。
- 减库存的操作
有两种选择,一种是拍下减库存 另外一种是付款减库存;目前采用的“拍下减库存”的方式,拍下就是一瞬间的事,对用户体验会好些 。
- 库存会带来“超卖”的问题:售出数量多于库存数量
由于库存并发更新的问题,导致在实际库存已经不足的情况下,库存依然在减,导致卖家的商品卖得件数超过秒杀的预期 。方案:采用乐观锁
还有一种方式,会更好些,叫做尝试扣减库存,扣减库存成功才会进行下单逻辑:
- 秒杀器的应对
秒杀器一般下单个购买及其迅速,根据购买记录可以甄别出一部分 。可以通过校验码达到一定的方法,这就要求校验码足够安全,不被破解,采用的方式有:秒杀专用验证码,电视公布验证码,秒杀答题 。
#3 秒杀架构原则#
- 尽量将请求拦截在系统上游
传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,并发高响应慢,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小【一趟火车其实只有2000张票,200w个人来买,基本没有人能买成功,请求有效率为0】 。
- 读多写少的常用多使用缓存
这是一个典型的读多写少的应用场景【一趟火车其实只有2000张票,200w个人来买,最多2000个人下单成功,其他人都是查询库存,写比例只有0.1%,读比例占99.9%】,非常适合使用缓存 。
#4 秒杀架构设计# 秒杀系统为秒杀而设计,不同于一般的网购行为,参与秒杀活动的用户更关心的是如何能快速刷新商品页面,在秒杀开始的时候抢先进入下单页面,而不是商品详情等用户体验细节,因此秒杀系统的页面设计应尽可能简单 。
商品页面中的购买按钮只有在秒杀活动开始的时候才变亮,在此之前及秒杀商品卖出后,该按钮都是灰色的,不可以点击 。
下单表单也尽可能简单,购买数量只能是一个且不可以修改,送货地址和付款方式都使用用户默认设置,没有默认也可以不填,允许等订单提交后修改;只有第一个提交的订单发送给网站的订单子系统,其余用户提交订单后只能看到秒杀结束页面 。
要做一个这样的秒杀系统,业务会分为两个阶段,第一个阶段是秒杀开始前某个时间到秒杀开始,这个阶段可以称之为准备阶段,用户在准备阶段等待秒杀; 第二个阶段就是秒杀开始到所有参与秒杀的用户获得秒杀结果,这个就称为秒杀阶段吧 。
##4.1 前端层设计## 首先要有一个展示秒杀商品的页面,在这个页面上做一个秒杀活动开始的倒计时,在准备阶段内用户会陆续打开这个秒杀的页面,并且可能不停的刷新页面 。这里需要考虑两个问题:
- 第一个是秒杀页面的展示
我们知道一个html页面还是比较大的,即使做了压缩,http头和内容的大小也可能高达数十K,加上其他的css,js,图片等资源,如果同时有几千万人参与一个商品的抢购,一般机房带宽也就只有1G~10G,网络带宽就极有可能成为瓶颈,所以这个页面上各类静态资源首先应分开存放,然后放到cdn节点上分散压力,由于CDN节点遍布全国各地,能缓冲掉绝大部分的压力,而且还比机房带宽便宜~
- 第二个是倒计时
出于性能原因这个一般由js调用客户端本地时间,就有可能出现客户端时钟与服务器时钟不一致,另外服务器之间也是有可能出现时钟不一致 。客户端与服务器时钟不一致可以采用客户端定时和服务器同步时间,这里考虑一下性能问题,用于同步时间的接口由于不涉及到后端逻辑,只需要将当前web服务器的时间发送给客户端就可以了,因此速度很快,就我以前测试的结果来看,一台标准的web服务器2W+QPS不会有问题,如果100W人同时刷,100W QPS也只需要50台web,一台硬件LB就可以了~,并且web服务器群是可以很容易的横向扩展的(LB+DNS轮询),这个接口可以只返回一小段json格式的数据,而且可以优化一下减少不必要cookie和其他http头的信息,所以数据量不会很大,一般来说网络不会成为瓶颈,即使成为瓶颈也可以考虑多机房专线连通,加智能DNS的解决方案;web服务器之间时间不同步可以采用统一时间服务器的方式,比如每隔1分钟所有参与秒杀活动的web服务器就与时间服务器做一次时间同步 。
推荐阅读
-
陕西省榆林市清涧县下辖街道办事处有哪些 陕北清涧县属于哪个市
-
成龙|成龙带成家班聚会,满杯红酒一口闷,奈何女儿生活落魄靠接济度日
-
-
|白露过后野钓,3选3不选,节气更替,钓鱼技巧跟着变
-
科技美学 搭载定制版i9以及AMD显卡,苹果神秘新机跑分现身
-
-
realme|冲破千元机天花板!realme Q3 Pro亮相:天玑1100+120Hz电竞屏
-
李克勤|《中国好声音》决赛结果出炉,梁玉莹夺冠,李克勤再当冠军导师
-
【健身汪】持续30天,效果带来了信心,一天300个俯卧撑
-
梦泪|梦泪在AG的牌面多足?管理层曝光工资Fly馋哭:难怪七年“无了”
-
[疫情]战疫情稳经济,多家挂牌公司进入重点保障企业名单!
-
台风“美莎克”过境吉林 农作物受损 恢复生产正在进行
-
风味|华文食品登陆深交所中小板,成为“鱼类零食第一股”
-
-
落得|铁匠起夜发现黄金,连夜掘出二十多箱财宝,最终落得全家人惨死!
-
大话百科天地 是OLED发展与应用需要突破的关键技术,OLED彩色化技术
-
广东公共DV现场|男孩被同龄人逼吸烟,拒绝后惨遭殴打致重伤!
-
-
跳绳的正确方法与技巧视频教程 跳绳的正确方法与技巧
-
i黑马 新媒体流量赛道开启最新模式,品牌媒体端升级时代