news 2026/4/26 3:06:59

第十六课实战:分布式锁与限流设计 —— 从原理到可跑 Demo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第十六课实战:分布式锁与限流设计 —— 从原理到可跑 Demo

学完分布式锁和限流,如果没有实战,你只是“知道”。
跑过一遍 Demo,你才是“会用”。

本文目标:
Spring Boot + Redis做一个最小实战,验证三件事:

  1. 没有锁会并发冲突
  2. 有锁但不校验 UUID 会误删
  3. 正确锁(UUID + 原子解锁)才安全
  4. 再加一层限流,形成“门禁系统”

一、实验场景设计

我们模拟一个经典业务:扣库存

特点:

  • 并发高
  • 容易超卖
  • 非常适合验证锁

资源:

商品ID:sku=1001 初始库存:1

二、实验环境

学习阶段一台电脑就够:

  • 本机 Redis(或 Docker Redis)

  • 两个 SpringBoot 实例

  • localhost:8080
  • localhost:8081

这两个实例共用一个 Redis,
就等价于“两台服务器”。

三、第一步:没有锁的情况

接口逻辑(伪代码):

if stock > 0: stock--

并发请求时可能出现:

库存=1 A读取=1 B读取=1 A扣减=0 B扣减=0

结果:超卖

四、第二步:加锁但错误解锁

加锁:

SET lock:sku:1001 uuid NX PX 30000

解锁:

DEL lock:sku:1001

风险场景:

  • A 执行慢
  • 锁过期
  • B 拿锁
  • A 执行完直接 DEL
  • 把 B 的锁删了 ❌

五、第三步:正确分布式锁

加锁

SET lock:sku:1001 uuid NX PX 30000

关键点:

  • NX:不存在才设置
  • PX:过期时间
  • uuid:锁身份

解锁(Lua 原子)

逻辑:

如果当前 value == 我的 uuid 删除 否则 不删除

意义:

  • 防误删
  • 防并发插队

六、加入限流 —— 门口再加一道闸

为什么要限流?

锁解决的是“同一资源冲突”,
限流解决的是“人太多把系统打爆”。

最简单限流思路

每秒最多 5 次请求:

key = limit:api:stock count++ 过期1秒 >5 拒绝

七、最终完整流程

请求进来 ↓ 限流(挡住洪水) ↓ 分布式锁(保护资源) ↓ 业务执行 ↓ UUID 原子解锁

这就是一个最小的并发门禁系统

八、你通过实战能学到什么?

能力价值
Redis 锁机制企业级并发思维
UUID 解锁防误删
Lua 原子操作工程严谨性
限流设计系统保护意识
多实例模拟

分布式思维

九、面试一句话总结

分布式锁用 Redis SET NX PX 实现,加 UUID 防误删,解锁用 Lua 原子校验;
限流用计数器或令牌桶算法保护系统,两者结合形成并发门禁机制。

十、一句话收尾

锁解决“抢同一资源”,
限流解决“来太多人”。
两者结合,你才真正具备并发系统设计能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 9:13:48

【书生·浦语】internlm2-chat-1.8b惊艳效果:200K上下文下跨文档事实核查

【书生浦语】internlm2-chat-1.8b惊艳效果:200K上下文下跨文档事实核查 今天我们来聊聊一个在开源社区里悄悄惊艳了很多人的“小”模型——InternLM2-Chat-1.8B。别看它只有18亿参数,在动辄百亿千亿参数的大模型时代显得有点“迷你”,但它在…

作者头像 李华
网站建设 2026/4/23 15:50:31

Qwen3-4B Instruct-2507一键部署:NVIDIA Jetson Orin Nano边缘设备实测运行

Qwen3-4B Instruct-2507一键部署:NVIDIA Jetson Orin Nano边缘设备实测运行 想在一台小小的边缘设备上,运行一个能流畅对话、帮你写代码、做翻译的AI助手吗?听起来可能有点挑战,毕竟大模型通常需要强大的云端算力。但今天&#x…

作者头像 李华
网站建设 2026/4/23 14:36:51

Phi-3-mini-4k-instruct与STM32CubeMX:嵌入式AI开发

Phi-3-mini-4k-instruct与STM32CubeMX:嵌入式AI开发 最近在折腾嵌入式项目,发现一个挺有意思的事儿:现在的小型AI模型已经能直接跑在单片机上了。以前总觉得AI推理是云端或者高性能计算平台的事儿,跟嵌入式设备没啥关系&#xff…

作者头像 李华
网站建设 2026/4/20 3:40:15

掌握4个强力分子对接参数生成技巧:GetBox PyMOL插件全攻略

掌握4个强力分子对接参数生成技巧:GetBox PyMOL插件全攻略 【免费下载链接】GetBox-PyMOL-Plugin A PyMOL Plugin for calculating docking box for LeDock, AutoDock and AutoDock Vina. 项目地址: https://gitcode.com/gh_mirrors/ge/GetBox-PyMOL-Plugin …

作者头像 李华
网站建设 2026/4/18 13:22:34

5分钟玩转CLAP:零样本音频分类入门指南

5分钟玩转CLAP:零样本音频分类入门指南 1. 引言:让AI听懂你的声音描述 你有没有想过,让AI像人一样,只听一段声音,就能告诉你这是什么?比如一段录音,你问AI:“这是狗叫吗&#xff1…

作者头像 李华
网站建设 2026/4/24 8:11:53

Qwen3-ASR效果展示:30+语言识别实测惊艳表现

Qwen3-ASR效果展示:30语言识别实测惊艳表现 你有没有试过把一段带口音的粤语录音丢进语音识别模型,结果它一本正经地告诉你:“我想吃一碗云吞面”——而原话其实是“我想查一下云服务器配置”?又或者,客户打来一通四川…

作者头像 李华