商城秒杀功能总结
秒杀系统的场景特点高并发、请求数量远远大于库存数量、下订单减库存。秒杀架构设计理念限流、削峰、异步处理、缓存、可拓展。实现方案限流、采用消息队列缓存、利用缓存应对读写请求。使用技术前端小程序后端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:06阅读更多 →
和小白一起学数据结构六之基本概念总结

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

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

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

Markdown编辑器使用说明

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

2026/7/28 18:20:06阅读更多 →
Binge-和时间做朋友

Binge-和时间做朋友

Binge-和时间做朋友 引言&#xff1a;时间的悖论在技术世界中&#xff0c;我们常常陷入一种矛盾&#xff1a;一方面追求即时反馈&#xff0c;希望每一行代码都能立即运行&#xff1b;另一方面&#xff0c;又渴望构建能经得起时间考验的稳定系统。这种矛盾源于我们对时间的误解—…

2026/7/28 19:36:20阅读更多 →
单一职责原则的常见误区

单一职责原则的常见误区

单一职责原则的常见误区 单一职责原则&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09;是面向对象设计中五大基本原则&#xff08;SOLID&#xff09;之一。它的核心思想是&#xff1a;一个类应该只有一个引起它变化的原因。然而&#xff0c;在实际开发…

2026/7/28 19:36:20阅读更多 →
TPIC7710EVM评估套件:汽车电子电机驱动ASIC的硬件设计与GUI软件实操指南

TPIC7710EVM评估套件:汽车电子电机驱动ASIC的硬件设计与GUI软件实操指南

1. 项目概述与核心价值在汽车电子和工业控制领域&#xff0c;当我们拿到一颗功能复杂的专用集成电路&#xff08;ASIC&#xff09;时&#xff0c;最头疼的问题往往不是芯片本身&#xff0c;而是如何快速、准确地验证它的功能&#xff0c;并将其集成到自己的系统中。数据手册上的…

2026/7/28 19:36:20阅读更多 →
你绝对不能错过的面试小技巧之一

你绝对不能错过的面试小技巧之一

面试中常见的小技巧之一&#xff1a;从基础说起&#xff0c;由浅入深&#xff0c;体现思维逻辑&#xff08;延长面试时间&#xff09; 那么就以java小白最最最最熟悉的SpringMVC框架为例来进行说明吧 **1. 谈谈SpringMVC的执行流程。**写在前面 首先针对这个问题相信小伙伴们都…

2026/7/28 19:36:20阅读更多 →
1.10- 异常处理 try except

1.10- 异常处理 try except

在python中&#xff0c;程序运行时出现错误后程序会终止&#xff0c;这种错误不是程序设计的错误&#xff0c;它是在程序运行时的运行错误&#xff0c;称为运行时错误(Runime Error)&#xff0c;处理这种错误要用到try/except异常处理语句。 例如&#xff1a; import math ninp…

2026/7/28 19:36:20阅读更多 →
JAVA毕设项目: 基于 SpringBoot+Vue 的大学生互助问答、文件共享一体化校园平台 校园学习互助社群与教学资源归档管理系统(源码+文档,讲解、调试运行,定制等)

JAVA毕设项目: 基于 SpringBoot+Vue 的大学生互助问答、文件共享一体化校园平台 校园学习互助社群与教学资源归档管理系统(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026/7/28 19:34:20阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!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:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

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

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

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

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

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

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →