易君召
发布于 2026-08-03 / 作者:易君召 / 3 阅读
0

分布式锁在企业业务中的常见应用场景

前置简要说明

分布式锁核心目标:分布式集群环境下,保证同一时刻只有一个节点 / 线程执行临界区业务,解决多实例并发争抢资源、防止重复操作、避免数据不一致问题。

常见实现方案:Redis 分布式锁、Zookeeper 临时节点锁、数据库乐观锁 / 悲观锁、etcd 分布式锁。

下面按企业真实业务领域分类,整理落地最多的场景,附带业务风险说明:

一、订单交易领域(电商、零售、供应链最常用)

1. 防止重复下单 / 重复提交

  • 场景:用户快速点击提交订单、网络重试、前端重复请求、网关重试,后端多实例同时收到多条相同下单请求。

  • 问题:不加锁会生成多条相同订单,超卖、重复扣款。

  • 实现:以用户 ID + 商品 ID前端唯一请求号作为锁 key,下单流程抢占锁。

2. 库存防超卖(经典场景)

  • 场景:秒杀、限时抢购、活动商品扣减库存,服务集群多实例并发扣库存。

  • 风险:单纯数据库update stock set num=num-1 where num>0乐观锁可解决简单场景;复杂场景(预占库存、分仓库存、多级库存)需要分布式锁控制完整业务流程。

3. 订单状态流转防并发冲突

  • 场景:订单同时收到支付回调、取消订单、超时关单多条消息。

  • 风险:并发更新订单状态,出现「已支付同时被关闭订单」的数据异常。

  • 方案:锁定订单 ID,串行执行状态变更逻辑。

4. 优惠券 / 红包防重复领取

  • 场景:活动红包、满减券,用户多次发起领取请求。

  • 锁维度:用户 ID + 券活动 ID,保证一个用户只能领取一次。

二、定时任务 & 消息调度场景(后台系统、大数据平台高频)

1. 定时任务集群防重复执行

  • 场景:Spring Schedule、XXL-Job 以外自研定时任务;同一个定时任务部署在多个应用实例,到点全部触发。

  • 需求:同一时间只允许一台机器运行任务

  • 典型业务:每日账单统计、凌晨数据同步、定时清理过期数据、报表生成。

补充:成熟调度框架(XXL-Job、Airflow)内置分片 / 锁机制;自研任务必须引入分布式锁。

2. 消息消费幂等 & 串行消费

  1. 防止消息重复消费

    MQ(RocketMQ/Kafka/RabbitMQ)重试投递,多个消费者实例收到同一条消息;利用消息 ID 加锁,避免重复执行业务。

  2. 有序消息串行处理

    同一商户 / 同一订单的多条消息要求按顺序处理,通过业务主键上锁,保证顺序执行。

三、资金、账务、支付清算(金融、财务系统强刚需)

1. 账户余额并发扣减

  • 场景:用户同时发起提现、消费、转账,多请求并发操作同一个账户。

  • 风险:余额计算错乱,出现透支。

小提示:金融核心优先数据库事务 + 乐观锁;跨服务长事务场景搭配分布式锁。

2. 提现防重复处理

第三方支付回调、定时任务扫描待提现记录,多个实例同时处理同一条提现申请,造成重复打款。

3. 对账、清算任务

日终清算、渠道对账,避免多个节点同时启动对账,产生重复对账流水。

四、供应链、仓储、物流业务

1. 商品出库、锁定库存

订单预占库存、拣货出库,多仓库服务实例并发操作库存;防止一单多次出库。

2. 物流运单状态更新

运单揽收、运输、签收消息并发推送,防止状态错乱。

3. 供应商配额管控

采购配额、月度供货额度,并发申请采购时控制总量。

五、资源抢占、限流、业务互斥场景

1. 第三方接口调用互斥

  • 场景:第三方服务商限制同一账号同一时间只能发起一次任务(例如报表导出、数据同步 API)。

    多实例同时调用会被第三方限流、封禁,需要分布式锁控制调用频率。

2. 文件 / 资源独占处理

  • 场景:大文件导入导出、OSS 文件解析、数据同步任务。

    同一文件不允许多个节点同时解析处理,防止文件损坏、重复导入数据。

3. 设备 / 硬件独占控制(物联网 IoT)

物联网平台:智能设备下发指令,同一设备同一时刻只能执行一条控制指令;

锁 key:设备唯一编号。

六、数据计算、大数据、ETL 场景

1. 数据分片计算互斥

Flink/Spark 离线任务、数据同步 ETL,避免多个实例同时同步同一段分片数据,产生重复数据。

2. 缓存重建防缓存雪崩

缓存失效瞬间大量请求击穿数据库(缓存击穿)。

解决方案:分布式互斥锁,只放行一个线程去更新缓存,其余线程等待,避免大量并发查 DB。

区分:缓存击穿(热点 key 失效)使用分布式锁;缓存雪崩更多依靠过期时间随机打散。

七、租户 / SaaS 多租户系统特有场景

SaaS 平台,多租户隔离:

  1. 单个租户的配置批量更新,禁止并发修改租户配置;

  2. 租户额度、套餐资源并发扣减;

    锁 Key 设计:tenantId:业务标识

八、工单、OA、审批流程

  1. 工单并发修改:客服同时编辑同一张工单,覆盖彼此修改内容;

  2. 审批流并发操作:多人同时审批同一条流程实例,造成流程状态异常;

    锁维度:工单 ID、流程实例 ID。

补充:场景选型经验(企业落地避坑)

  1. 短事务、高并发互联网业务 → Redis 分布式锁(Redisson)

  2. 强一致性、金融核心长流程 → Zookeeper/etcd 分布式锁

  3. 极低并发、不想引入中间件 → 数据库乐观锁(优先),谨慎使用数据库悲观锁(性能差)

区分两个容易混淆概念

  • 分布式锁:互斥,同一时间只能一个执行

  • 幂等:允许重复请求,但最终结果只生效一次

    很多场景(重复下单、消息消费)同时需要幂等 + 分布式锁,二者不能完全互相替代。


原文链接 https://www.yijunzhao.cn/archives/distributed-lock-enterprise-use-cases-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/