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负载均衡
下一篇:
华为od找出斗地主中的顺子