商城秒杀功能总结
秒杀系统的场景特点高并发、请求数量远远大于库存数量、下订单减库存。秒杀架构设计理念限流、削峰、异步处理、缓存、可拓展。实现方案限流、采用消息队列缓存、利用缓存应对读写请求。使用技术前端小程序后端Spring Cloud、Mybatis中间件RabbitMQ、Redis关键技术1、无状态登录实现分布式session好处不依赖于服务端信息用户信息只存在于user模块、减小服务端存储压力、服务端可以任意迁移伸缩。流程登录时对用户信息进行认证-认证通过后将用户信息加密形成token返回客户端-每次请求都携带该token-服务对token进行解密。技术实现JWTRSA非对称加密JWTJson Web Token是JSON风格轻量级的授权和身份认证规范。JWT包含三部分Headertoken类型最基础是JWT、加密算法Payload有效数据、SignatureRSA256(Base64(Header)Base64(Payload)私钥用于校验信息是否被篡改。RSA256非对称加密。私钥加密时持有私钥或公钥解密公钥加密持有私钥才可解密。为什么要使用RSA256如果使用非可逆加密由于安全性私钥只会存在鉴权中心因此所有请求都要访问鉴权中心导致鉴权中心压力过大。私钥只存在于鉴权模块中公钥存在于其他所有模块所有模块都可以通过公钥解析用户身份信息。2、Redis预减库存减少数据库访问内存标记减少Redis访问读取策略首先尝试从缓存读取读取到数据则直接返回如果读不到就读数据库并将数据库写回到缓存并返回。更新策略先更新数据库然后把缓存对应的数据删除防止频繁更新懒加载的思想。如果先删除缓存再更新数据库如果有A、B线程同时更新这时C线程在AB更新之间读取会把A更新的数据写入缓存导致缓存、数据库不一致如果不删除缓存A、B线程更新数据库B后更新的数据库却先更新了缓存也会导致缓存、数据库不一致。但是如果redis删除失败也会存在缓存不一致问题更好的做法是对相同的商品id做hash将对于商品的操作路由到某一个内存队列中以此来保证多线程环境下对同一条记录读写并发的问题其中可以对多个更新缓存请求合并并且设置超时时长防止频繁更新导致大量读请求积压但一般来说更新频率不会这么高。当读请求并发量很高时可以扩容。但是缺点是串行化降低系统吞吐量。3、使用消息队列完成异步下单秒杀逻辑1把商品库存加载到Redis2后端受到秒杀请求Redis预减库存如果库存不足直接返回失败3库存充足且无重复秒杀则将秒杀请求入队返回排队中4后端消费者监听秒杀消息通道在此判断库存、判断是否重复秒杀然后执行秒杀事务。5秒杀成功则返回商品ID-1秒杀失败0表示排队中。4、安全限制1秒杀接口地址隐藏秒杀请求发起之前先去获取秒杀地址-生成随机MD5字符串存入redis并设置有效期60s)-前端携带该参数进行秒杀后端验证该参数2数学公式验证码ScriptEngineManager eval生成结果存入redis3接口限流防刷使用用户ID和商品ID拼接key用key记录用户访问次数有效期1分钟并设定访问限制次数。项目细节问题解决1、为防止缓存穿透对不存在的数据缓存空数据2、秒杀开始前进行缓存预热并使用keepalived建立主从热备3、对于缓存中库存已清零采用内存标记减少redis服务器的压力4、在秒杀订单表中使用商品Id和goodsId建立唯一索引防止重复下单5、在减库存sql中增加stock_count0判断防止卖超6、设置定时任务轮询超过30分钟未支付的订单将其关闭并回复库存。压力测试使用JMeter测试5000个线程*10次优化前后QPS从1000多提升到2700多。改进方法nginx横向扩展、分布式缓存、分布式数据库。

相关新闻

大一暑假集训最终考试(一)(2019.8.31)

大一暑假集训最终考试(一)(2019.8.31)

D题 nefu 1866 这是一道难题 思路&#xff1a;树状数组模板题。还有就是树状数组的单点修改只支持加减&#xff0c;不支持直接修改&#xff08;修改时先减去原来的数&#xff0c;再加上修改后的数即可&#xff09;。 坑的地方&#xff1a;没说查询时一定满足x<y&#xff0…

2026/7/28 18:20:10 阅读更多 →
和小白一起学数据结构六之基本概念总结

和小白一起学数据结构六之基本概念总结

一起学数据结构之绪论基础概念 五天前甚至对markdown语法&#xff0c;都不是很熟悉&#xff0c;现在却觉得没有这个语法的创作页面没有灵魂哈哈。其实这个东西一年前就有人推荐给博主了&#xff0c;当时只是看一下觉得麻烦&#xff0c;没怎么走几步&#xff0c;回过头来才发现因…

2026/7/28 18:20:10 阅读更多 →
Markdown编辑器使用说明

Markdown编辑器使用说明

欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&#x…

2026/7/28 18:20:10 阅读更多 →

最新新闻

Godot Shader特效:自定义Shader实现3D描边(outline)效果

Godot Shader特效:自定义Shader实现3D描边(outline)效果

上篇笔记《Godot Shader特效:3D描边(outline)效果 原理篇》介绍了Godot实现3D描边的原理&#xff0c;该文中是用Godot自带的SpatialShader通过调整参数实现的&#xff0c;由于这个效果在3D游戏中还是很常用的&#xff0c;所以干脆自己写了一个专用Shader,非常简单。把它添加到材…

2026/7/28 18:26:11 阅读更多 →
【单片机毕业设计推荐】基于 STM32 单片机的宠物定时投喂控制系统设计与实现,基于 STM32 的智能投喂装置语音播报与时序显示系统设计(011404)

【单片机毕业设计推荐】基于 STM32 单片机的宠物定时投喂控制系统设计与实现,基于 STM32 的智能投喂装置语音播报与时序显示系统设计(011404)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能基础功能核心功能辅助功能技术路线项目演示关于我们项目案例源码获取温馨提示&#xff1a;本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶…

2026/7/28 18:26:11 阅读更多 →
成本分析必懂的6大模型,背下来你就是降本高手!

成本分析必懂的6大模型,背下来你就是降本高手!

很多企业做成本管理&#xff0c;都有一个共同困惑&#xff1a;明明每天都在喊“降本增效”&#xff0c;成本报表也每个月都在做&#xff0c;但真正到了经营分析会上&#xff0c;还是说不清楚&#xff1a;成本到底高在哪里&#xff1f;为什么会高&#xff1f;下一步应该怎么降&a…

2026/7/28 18:26:11 阅读更多 →
三张财务报表到底怎么看?记住这6个勾稽关系!

三张财务报表到底怎么看?记住这6个勾稽关系!

很多人看财务报表&#xff0c;习惯把三张表分开看。利润表看收入和利润&#xff0c;资产负债表看资产和负债&#xff0c;现金流量表看钱从哪里来、又花到哪里去。数字看了不少&#xff0c;最后却很难回答&#xff1a;企业利润增长了&#xff0c;现金为什么更紧张&#xff1f;收…

2026/7/28 18:26:11 阅读更多 →
java学习(86):Interage方法compareto,parseint,intvalue

java学习(86):Interage方法compareto,parseint,intvalue

public class test22 {public static void main(String[] args){int num5;Integer obj1new Integer(num);System.out.println("obj1的值为"obj1);Integer obj2100;System.out.println("obj2的值为"obj2);Integer obj3new Integer("-789");System…

2026/7/28 18:26:11 阅读更多 →
Taotoken实测:128K上下文塞满后,GPT-5.4竟比Claude更早开始胡说?长会话记忆分层方案

Taotoken实测:128K上下文塞满后,GPT-5.4竟比Claude更早开始胡说?长会话记忆分层方案

长会话AI记忆失效危机&#xff1a;2026年工程应对指南 上周在Taotoken平台调试合同审查Agent时&#xff0c;我们观察到一个令人不安的现象&#xff1a;当对话轮次超过40轮后&#xff0c;GPT-5.4开始将甲方公司名称"震旦"错写成"晨旦"&#xff0c;而号称支…

2026/7/28 18:25:11 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻