java秒杀系统解决方案

一、前端


1、动静分离,将静态资源放到第三方云服务中进行CDN加速,减轻秒杀时的带宽压力,比如阿里云、七牛云等。
2、点击秒杀按钮后,记得将按钮禁用。
3、使用验证码恶意防刷。
4、商品的详情页可以使用页面静态化技术提高响应速度
  有两种方式,一种是使用nginx对页面进行缓存配置,一种是直接利用浏览器端缓存,两种差不多,相比之下后一种其实更科学。

二、网关


1、网关一般在微服务中用来做认证鉴权以及限流操作,这里在秒杀场景中就是使用限流算法,对用户秒杀请求实现限流和服务保护。
2、限流算法如redis限流、nginx、hystrix等,实际工作中使用最多的还是令牌桶算法,可以基于这个算法自己写一个注解,也可以使用Google工具类已经实现的RateLimter。

三、服务端


1、通过MQ消息队列进行下单处理
2、version版本号+1实现的乐观锁机制解决超卖问题
3、redis缓存商品库存解决超卖问题
4、数据库自带的行锁机制
5、结合redis对商品id加lock锁解决超卖问题

四、测试


使用Apache的jmeter压测工具,根据测试结果不断优化。

五、服务器


增加服务器 nginx负载均衡

你可能感兴趣的:(java,开发语言)