设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

用免费CDN加速秒杀系统需要注意的点

作者:cdnfine      来源:cdnfine      发布时间:2019-06-30

秒杀的特征?

短时间内并发量高

 

秒杀系统需要注意的问题?

1、前端优化

2、防止超卖

3、频率限制


前端优化:

1、将静态资源(js,css,img)等,存放到七牛云静态资源服务器,七牛云静态资源服务器能够实现CDN内容分发,将静态资源缓存到全国各个节点,能够减少服务器的带宽传输。从而提高宽带传输速度。

2、使用maven插件自动对静态资源实现压缩,每次发布的时候使用版本号更新静态资源。

 

如何防止超卖?

1、不用version版本如何实现乐观锁,where 库存>0

在mysql中,更新数据库时,有行锁,会成为单线程

2、乐观锁先查询版本号,在将版本号作为参数传递

谁快谁能拿到锁,能修改成功

两者的区别:第一种属于行锁,悲观锁,效率低;第二种是乐观锁

 

频率限制:

redis  setNX 超时

 

 

为什么秒杀单独以微服务形式部署?

不影响其他服务,docker实现快速扩容

 

 

如果秒杀请求过多,对数据库频繁的io操作,可能会产生数据库崩溃问题,该如何解决?

首先,分表分库没用,不能从根本上解决问题,应该提前生成好令牌,放在令牌桶中,谁能抢到令牌,然后在异步发送到MQ,然后修改数据库信息(令牌key 商品库存id  value 集合 list

 

秒杀总结:

前端:

1、动静分离,静态资源存放在第三方文件服务器实现cdn加速,目的减轻秒杀的抢购带宽

2、当用户点击秒杀按钮,应该将按钮置灰,防止重复提交

3、使用复杂的图形验证码防止模拟

4、秒杀详情页面,使用定时器查询用户秒杀结果

5、商品详情页,使用nginx+lua+openresty实现静态化页面

 

网关:

1、ratelimiter,nginx,redis,hystrix

令牌桶+漏桶算法 对用户的秒杀请求进行限流和服务的保护

2、用户黑名单和白名单拦截

 

秒杀接口:

1、服务降级,隔离,熔断

2、获取redis的令牌桶(如果能得到token就能秒杀)

3、异步使用MQ执行修改库存操作

4、根据用户信息查询秒杀结果

 

项目部署点:

nginx+lvs实现高可用和集群

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速