【面试】秒杀设计

         我们衡量一个web系统的吞吐率的指标就是QPS,也就是每秒处理请求数,假设一下,处理一个业务的请求平均响应时间为100ms,同时系统内是20台服务器集群,同时配置为MaxClients为500个,那么我们的QPS值为20*500/0.1=100000,实际情况是这样的简单吗?可以支持这样高的GPS吗?

秒杀业务的特点就是多个人读一个数据,难点就是读写冲突,锁情况特别的严重。 所以我们尽量不要让请求落在数据库上去,让请求拦截在系统的上游。


1、比如查询的按钮,很多情况下会出现点击好几次,假如系统很慢,很可能一下子点击好多下。针对这种情况下,我们可以让查询的按钮变灰,或者是页面重新转向另一个页面。

同时在JS中,我们可以限制用户在多长时间内仅仅只能提交一次。


2、假如一些人员用程序来频繁的访问网站呢?比如一个程序员写一个for循环一万次来请求这个接口,该怎么办?我们可以用uid作为限制,来进行请求的去重,同时用用户的ip来做限制,实现请求的去重。但是又有问题出现,5秒请求了100次,我们进行了去重,实际上的提交却是2次,用户在页面上面得不到反馈,会不会是不好的用户体验?我们可以进行页面缓冲,这样就可以提高用户体验。


3、静态资源用CDN来部署,压力是不是会减少很多?用Nginx来部署?是不是页面的缓冲速度提高了很多?


4、分段分时,


5、后端服务上的粒度进行优化,同时采用异步的形式,加大并发量的支持。比如将下单业务和支持业务的分离


6、服务器上的垂直扩展和水平扩展,各种集群


7、多线程、乐观锁和悲观锁、队列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值