美文网首页
php+redis 秒杀系统设计

php+redis 秒杀系统设计

作者: 骑代码奔小康 | 来源:发表于2020-06-11 22:05 被阅读0次

    秒杀问题:

    • 高并发
    • 恶意请求和无效请求
    • 超卖
    • 数据库压力
    • 链接暴露

    一、高并发解决方法

    • 用Nginx负载均衡,还可以用Nginx拦截高频率的恶意请求

    二、恶意请求和无效请求

    • Nginx拦截高频率的恶意请求
    • 前端优化:图片放到对象存储 页面静态化,用户在点击下单以后按钮变成灰色,js中限制请求之间需要间隔几秒
    • 后端优化: 秒杀涉及到的订单生成支付等操作,都是要秒杀完成后,秒杀成功的用户才能做的操作,在产品库存没有了以后,直接反回false

    三、超卖解决方法,数据库压力

    • 事先把所有的产品都放到Redis队列里面,由于队列具有原子性,在队列消费完了以后,后面的请求都直接返回false,直接挡住后面的请求
    • 加入数据持久化,由于所有的秒杀操作都是在Redis中实现的,后面的操作只是秒杀成功了的用户,最后落到数据库上的压力就非常小了

    四、链接暴露

    就算前端做了相关的措施,但是在程序员或者高手面前都是无用的,直接拿到接口写个循环可以得到很多优势,秒杀开始后客户端请求服务器获取到加密串,再秒杀下单的时候带上这个加密串,一个串只能请求一次,这样就能避免拿到链接后写死循环请求

    相关文章

      网友评论

          本文标题:php+redis 秒杀系统设计

          本文链接:https://www.haomeiwen.com/subject/vhjzlqtx.html