上面,完成了防止超卖商品和抢购接口的限流,已经能够防止大流量把我们的服务器直接搞炸,要开始关心一些细节问题。现在设计的系统还有一些问题:
我们应该在一定的时间内执行秒杀处理,不能再任意时间都接受秒杀请求。如何加入时间验证?
对于稍微懂点电脑的,又会动歪脑筋的人来说开始通过抓包方式获取我们的接口地址。然后通过脚本进行抢购怎么办?
秒杀开始之后如何限制单个用户的请求频率,即单位时间内限制访问次数?

限时抢购实现

使用redis来记录秒杀时间,,对秒杀过期的请求进行拒绝处理!!

一般在真实环境中,都会通过定时任务,在秒杀获取开始的前,将数据库中要秒杀的商品添加到redis中, 下面我们手动模拟

这里我们使用String类型 以kill + 商品id作为key 以商品id作为value,设置180秒超时(可随意设置时间)
127.0.0.1:6379> set kill1 1 EX 180

抢购中加入时间控制
整合当前项目操作redis服务,这里使用spring-boot-starter-data-redis操作redis,引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

修改yml配置

spring.redis.port=6379
spring.redis.host=localhost
spring.redis.database=0

通过redis控制抢购超时的请求

秒杀接口隐藏

  • 每次点击秒杀按钮,先从服务器获取一个秒杀验证值(接口内判断是否到秒杀时间)。
  • Redis以缓存用户ID和商品ID为Key,秒杀地址为Value缓存验证值
  • 用户请求秒杀商品的时候,要带上秒杀验证值进行校验。


这样可以起到一定的作用

单用户次数限制

其实很简单的就能想到用redis给每个用户做访问统计,甚至是带上商品id,对单个商品做访问统计,这都是可行的。
我们先实现一个对用户的访问频率限制,我们在用户申请下单时,检查用户的访问次数,超过访问次数,则不让他下单!

秒杀系统的设计与实现(三)(限时抢购、抢救接口、单用户限制实现)相关推荐

  1. 【学习笔记】秒杀系统架构设计

    秒杀其实主要解决两个问题 并发读 VS 并发写 并发读的核心优化理念是尽量减少用户到服务端来"读"数据,或者让他们读更少的数据 并发写的处理原则也一样,它要求我们在数据库层面独立出 ...

  2. “618”背后的秒杀系统如何设计?

    这次618京东实现下单金额2692亿元,你贡献了多少份额呢? 从5月25日-5月31日进入预热阶段,6月1日-6月15日进入专场阶段,6月16日-6月18日进入高潮阶段,6月18日-6月20日进入返场 ...

  3. 面试必备:一个秒杀系统的设计思考

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:阿哲 segmentfault.com/a/11900000 ...

  4. 一个秒杀系统的设计思考

    简介:从架构视角来看,秒杀系统本质是一个高性能.高一致.高可用的三高系统.而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本文讨论的话题. 秒杀大家都不陌生.自2011年首次出现以来,无论是双 ...

  5. 面试官:说说你对高性能秒杀系统的设计思考?

    近年来,随着"双十一"购物节和抖音等直播平台带货的热潮,大批促销活动涌现,「秒杀」这个词也越来越频繁地出现在我们的生活里. 除了那些头部的电商公司,某宝.某东,还有各种街.某说.某 ...

  6. 第一百一十一期:思考 | 一文说透秒杀系统如何设计

    秒杀大家都不陌生.自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见.简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程.从架构视角来看,秒杀系统本 ...

  7. 经验:一个秒杀系统的设计思考

    点击上方「蓝字」关注我们 前言 秒杀大家都不陌生.自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见.简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的 ...

  8. 一个秒杀系统的设计思考(整体思考,收藏了)

    作者:阿哲 来源:https://segmentfault.com/a/1190000020970562 前言 秒杀大家都不陌生.自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀 ...

  9. 系统架构设计——秒杀系统架构设计

    摘要 秒杀大家都不陌生.自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见.简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程.从架构视角来看,秒杀 ...

  10. 高并发秒杀系统如何设计?

    前言 秒杀大家都不陌生.自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见.简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程. 从架构视角来看,秒 ...

最新文章

  1. Visual Studio 15.7预览版4改进Git、C++支持
  2. Nginx下配置Http Basic Auth保护目录
  3. 论坛报名 | 人工智能与疫情精准防控
  4. POJ 3041 Asteroids 二分图匹配
  5. python之路day9_亮仔的Python之路Day9——Python知识体系重组
  6. phpcms v9调用当前栏目的同级栏目的几种方法(转)
  7. C语言中队列、堆栈、内存映射、多线程概念
  8. GridView里面模板获取唯一值(如ID)
  9. 自定义view局部刷新_View
  10. java模拟器_KEmulator(java模拟器)
  11. Java——JButton按钮
  12. 计算机键盘上的tab键是什么键,键盘Tab键有什么作用?
  13. Windows 本地账户
  14. ROS项目开发实战(三)——使用QT进行ROS的GUI界面设计(详细教程附代码!!!)
  15. 大部分有高学历的人比低学历的人强
  16. 浅析微服务架构应该在什么时候采用
  17. ARM架构Generic Interrupt Controller(GIC)详解之术语介绍
  18. WAIC 2020 微软论坛精彩全回顾!
  19. SPSS 调节和中介
  20. 京东API详情接口调用示例

热门文章

  1. 民族证券分析报告(0608)
  2. 100道+ JavaScript 面试题,助你查漏补缺
  3. 旅游路线最短matlab,动态规划求最短旅行路线.doc
  4. ZYNQ 7000成长记——菜鸟从零开始学嵌入式linux(前言)
  5. 【247期】区块链撸羊毛币圈空投糖果(10月2日更新)
  6. SpringBoot系列:MybatisPlus的入门级使用教程(上)
  7. win7 旗舰版光驱设备不见了解决方案
  8. 数据文件批量处理脚本汇总
  9. springboot 简单练习
  10. 手串(暴力) - 今日头条2018校园招聘后端方向(9.10)