博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
秒杀系统设计
阅读量:7188 次
发布时间:2019-06-29

本文共 1110 字,大约阅读时间需要 3 分钟。

  hot3.png

  • 数据库实现 乐观锁

sql

update tsec_killset num = num - #{buys}wheresku = #{sku} and num - #{buys} >= 0

问题:数据库读写瓶颈

  • 缓存实现

Redis原生原子操作

系统设计

  1. 一键秒杀引导

一键秒杀引导设置后无需再结算页面输入/修改 地址 优惠 发票等元素,减少结算新再次计算和调用操作

  1. 验证码输入
  2. 下单页面防止恶意请求

下单地址动态化,动态地址再商品秒杀开始时返回给页面 防止恶意请求

  1. 秒杀库存预冻结

秒杀活动创建的时候商品库存预冻结,库存中心添加一种冻结类型

秒杀成功后直接使用改库存生成订单,订单中心增加一种秒杀订单类型

  1. 库存释放

不付款或者取消订单

一:进行库存释放,用户可以再次抢购(秒杀系统调用库存中心释放库存)

  1. 数据交互内存操作

可以使用redis 预加载数据

比如 库存计数器 用户违规操作(同ip时间内访问频率过高,同用户访问频率过高,黑名单,) Redis表的键值设置会尽量遵从最短执行/扫描路径设计

  1. 内存操作的数据对象

库存计数器 服务器节点接受的请求计数器 用户参与秒杀记录(针对 时间 商品 活动) 预生成订单vo 秒杀商品信息 访问控制数据

  1. 预加载到内存的时机

库存计数器 ---秒杀活动创建 递减

服务器节点接受的请求计数器-- 递减

用户参与秒杀记录(针对商品) -- 秒杀成功

用户参与秒杀记录(针对活动)-- 秒杀成功

用户参与秒杀记录(针对时间段)-- 秒杀成功

预生成订单vo -- 秒杀活动创建后

用户验证码 -- 用户点击 一键秒杀

秒杀商品活动信息 -- 秒杀活动创建

访问控制数据 -- 请求进入

  1. 系统隔离

第一期需要以来的模块

活动运行时依赖; 支付中心,库存中心,订单中心(库存释放)

活动开始前依赖: 商品中心, 会员中心,商家后台

  1. 秒杀库存计数器

通过Redis的原子自增锁实现 decr incr

  1. 请求的四次拦截 js处理高频点击处理限制

第一次:请求错流 验证码输入,将流量错开 减少并发

第二次:恶意流量拦截 过滤掉恶意请求 (部分)

第三次:服务节点拦截 每个服务节点允许下单的流量等于商品的库存数,其他请求提示秒杀已经抢完 到达秒杀持久化层的流量 = 服务节点数 * 库存数

第四次:到达秒杀持久层的请求数等于库存+N(N为溢出值),其他提示秒杀抢完

  1. 秒杀页面独立

该页面只调用秒杀系统,减少营销借接口的压力

  1. 秒杀成功订单持久化操作

如果持久化的量非常高 可以考虑使用消息队列来实现

转载于:https://my.oschina.net/kipeng/blog/1629589

你可能感兴趣的文章
vue中使用key管理可复用的元素
查看>>
ssh登录到linux机器一直报错/usr/bin/grep: Argument list too long
查看>>
C#操作Exchange配置
查看>>
Spark项目之电商用户行为分析大数据平台之(一)项目介绍
查看>>
C# 读取大文件 (可以读取3GB大小的txt文件)
查看>>
Warning: file_put_contents(常用单词1.txt): failed to open stream: Invalid argument in
查看>>
Avro kafka(Producer-Consumer)
查看>>
[Linux] - xxx 不在 sudoers 文件中。此事将被报告。
查看>>
Linux pwn入门教程(0)——环境配置
查看>>
全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的完全卸载(图文详解)
查看>>
完整的支付体系
查看>>
(c#) 销毁资源和释放内存
查看>>
018-Go将磁盘目录实现简单的静态Web服务
查看>>
nginx file not found 错误处理小记
查看>>
php中类文件名的命名的规则是什么
查看>>
C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较...
查看>>
C++使用 jsoncpp 解析json数据
查看>>
npm错误:Error: listen EADDRNOTAVAIL
查看>>
jquery中最常用的API有哪些
查看>>
现代互联网的TCP拥塞控制(CC)算法评谈
查看>>