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

限时抢购实现

使用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. CISSP考前总复习
  2. 【视频课】图像分割最新内容来了(言有三新录制6大理论部分+1个案例实践讲解)...
  3. java io读取文件夹_JavaIO利用迭代读取文件夹所有目录及文件
  4. 计算机一级考试word操作题主要题型,(word)计算机一级考试题型.doc
  5. redis 主从复制 [转]
  6. 春晚之后的采访和豆瓣投名状
  7. EncryptionHelper.cs(20170223)
  8. c语言程序优化设计,C程序设计语言的教学策略优化设计
  9. 右侧按钮登录注册html,翻转式用户登录注册界面设计
  10. 基于Bootstrap的Asp.net Mvc 分页的实现(转)
  11. python入门基础知识实例-Python入门教程丨1300多行代码,让你轻松掌握基础知识点...
  12. sam机架和kx连线图_创新声卡KX 3552驱动连线搭载SAM机架
  13. 全球定位经纬度的方法现在是GPS等系统定位,以前是指南针罗盘六分仪
  14. HTML期末大作业~海贼王动漫的HTML网页制作(共五页有五种风格)
  15. AMD GPU模式设置(1):核心数据结构
  16. windows安装证书后无法信任问题解决
  17. EASYOPS系列|《凤凰项目》用几百案例解释DevOps
  18. 像素坐标系、图像坐标系、相机坐标系、世界坐标系
  19. 企业级容器技术Docker
  20. Vue时间戳(年/月/日/时:分:秒and 刚刚/一分钟前···)

热门文章

  1. 全世界的人注意了,我要在兄弟连这里华丽变身了~!
  2. 30岁小学毕业电工转java
  3. 给对象设置css,style对象的cssText方法
  4. PhpStudy+Xdebug调试超时500解决方法 Apache2.4调试时间太短的问题
  5. Linux下创建FTP虚拟用户的配置过程--非系统账户登陆FTP
  6. 2022年昆明市高新技术企业申报奖励以及申报材料汇总
  7. C++ 十六进制与十进制之间转换
  8. Android设置壁纸
  9. 南理工计算机考研统考吗,南京理工大学考研难吗?一般要什么水平才可以进入?...
  10. 制造业数字化转型的意义