- 如何进行下单前置检查
如果超过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服务器就与时间服务器做一次时间同步 。
推荐阅读
-
「颖尚国际」裤腰扣个“半圆”,靓女臭美到家了,裤腿“裁两刀”
-
翡翠|鹰击天风壮,鹏飞海浪春,带你了解翡翠鹰的寓意!
-
手机中国 Store应用安装量低于Google Play 但营收是它两倍,App
-
-
-
乐舞蹈|棕色毛绒大衣搭配浅色牛仔裤,整体造型非常简约时尚
-
-
-
深圳深圳:八月底前全国率先实现5G网络高质量全覆盖
-
展讯|【展讯】“蓝轩杯”威海市硬笔书法优秀作品展12月12日在威海美术馆开幕
-
|因为肚子疼在胆汁中发现了虫子!医生提醒:别再乱吃了
-
[动力]大众新车亮相,比思域还帅气,一脚272马力,雅阁都扛不住!
-
-
时代|原创TFBOYS亲师弟为什么红不起来?光琢磨剑走偏锋,这两点过分了
-
中国新闻网|加拿大总理特鲁多为助学金项目风波接受质询 称无利益冲突
-
傲人的腹肌是怎么练出来的,别再相信那些谣言,我告诉你该怎么做
-
豪华车|WLTP续航660不缩水 奔驰最贵纯电车全球首发:一图读懂EQS SUV
-
-
-
华为还用美国技术?日媒曝光华为5G基站,拆解出大量美国零件