企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
一.前端层 1.将秒杀系统独立部署,甚至`使用独立域名,使其与网站完全隔离` 2.重新设计秒杀商品页面,不使用网站原来的商品详细页面,`页面内容静态化,用户请求不需要经过应用服务` 3.**动静分离,将静态资源放到第三方云服务中进行CDN加速,减轻秒杀时的带宽压力,比如阿里云、七牛云等等。** 实践证明,CDN加速的效果十分明显,对于一些响应不是很快的网站而言,静态资源做了CDN加速后会变得很快,前后响应速度截然不同,是生产中必不可少的一种方式 4.(1)**产品层面**,用户点击“查询”或者“购票”后,按钮置灰,禁止用户重复提交请求;(2)**JS层面**,限制用户在x秒之内只能提交一次请求; 5.**使用验证码恶意防刷**如:秒杀专用验证码,电视公布验证码,秒杀答题 6.已超过秒杀商品总数,返回已结束页面给用户; 未超过秒杀商品总数,提交到子订单系统; 7.临时增加带宽 二.站点层设计 订单页面 1)**`同一个uid,限制访问频度`**,做页面缓存,x秒内到达站点层的请求,均返回同一页面 (2)**`同一个item的查询,例如手机车次`**,做页面缓存,x秒内到达站点层的请求,均返回同一页面 三.服务层设计 **`对于写请求,做请求队列,每次只透过有限的写请求去数据层,如果均成功再放下一批,如果库存不够则队列里的写请求全部返回“已售完”`** **`对于读请求,还用说么?cache来抗`**,不管是memcached还是redis,单机抗个每秒10w应该都是没什么问题的; 四: 1.倒计时 出于性能原因这个一般由js调用客户端本地时间,就有可能出现客户端时钟与服务器时钟不一致,另外服务器之间也是有可能出现时钟不一致 采用客户端定时和服务器同步时间 2.**减库存超卖** 用户购买数量不做限制,需要判断库存是否足够 1>尝试扣减库存,扣减库存成功才会进行下单逻辑 2>采用乐观锁,数据库自带的行锁机制