秒杀系统

一、并发量大:

1)请求分发,分发到不同服务器,采用集群,Nginx或Apache来分发。

2)一般都会用缓存(本地缓存或第三方缓存),商品信息、剩余量放缓存,但具体的扣除操作,要加锁验证数据库库存,锁定的商品被放弃,放回可抢购状态更新缓存。

3)除了放缓存,也可加上标志位(比如volatile boolean hadEnd = false),防止活动结束了,还是频繁的调用接口验证。所以一般为了防止拖垮其他服务,将秒杀系统单独起一个服务。

4)页面静态化

5)缓存到CDN

二、防盗刷:限ip,限点击量、限请求数、限指定用户等各种限制。

三、找出速度快的若干用户:可以放到ArrayBlockingQueue(阻塞队列)指定长度队列,但最好用ConcurrentLinkedQueue并发队列(入队CAS比较,可能会失败,但相当快快快...),然后从队列取出用户一个一个进行商品购买。或者两者结合,先用ConcurrentLinkedQueue接收请求,再从中拿出请求放到ArrayBlockingQueue,然后单线程供“库存数据库服务”扣除库存操作。另外,最好用乐观锁(即版本号更新方式),失败也立即返回,防止阻塞太多死链接。

 

待续。。。

 

可学习的文章:

1、Web系统大规模并发——电商秒杀与抢购

2、淘宝大秒系统设计详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值