解决方案
硬件:提高系统配置、增加机械
软件:架构设计优化
秒杀面临的问题
高并发
时间极短,瞬间用户量大,大量请求进来,会造成缓存雪崩、缓存击穿等,造成数据库崩溃
超卖
恶意请求
黑客、黄牛,搞几十台机械,写脚本,模拟用户去请求
链接暴露
通过F12的控制面板,获取到秒杀的链接,这样置灰功能就失效了,秒杀被提前了
设计漫谈
根据单一职责的思想,搭建一个秒杀服务。
秒杀链接加盐,动态URL,通过MD5加密算法加密随机的字符串去做url,然后通过前端代码获取url后台校验才能通过
redis集群,单机扛不住,用集群,配置主从同步,读写分离、哨兵等,并开启持久化
nginx
负载均衡,分布式架构,后端部署多节点
恶意请求拦截
资源静态化:用cdn加速
按钮控制:秒杀前置灰,到点后可点击,点击一次后置灰
后端限流降级
库存预热:将库存放入到redis缓存中
分布式锁
redis事务:多行命令一起执行的
削峰填谷:mq异步去扣减库存