超大并发分布式锁架构设计¶
一、挑战¶
- 每秒几十万上百万加锁请求。
- 不能用一把锁串行所有请求。
- 锁粒度要细。
二、锁分片¶
把一个大锁拆成 N 个小锁:
请求按 hash 分到不同分片,并行加锁。
例子¶
库存扣减:商品 ID % 100,分到 100 把锁。
三、锁分级¶
粗粒度锁¶
跨分片操作,用更大的锁。
细粒度锁¶
单分片操作,小锁。
四、Redis 集群¶
- 分片锁分散到不同 Redis 节点。
- 每个节点扛一部分 QPS。
- Redisson 看门狗自动续期。
五、无锁化¶
能不用锁就不用:
1. 乐观锁¶
2. 分段¶
库存拆成多个段,每段独立扣减。
3. 异步化¶
扣库存异步化,MQ 削峰。
六、Zookeeper/etcd 做元数据¶
CP 系统做锁协调: - 选主。 - 配置中心。 - 分布式锁(关键路径)。
Redis 做缓存和高性能锁(非关键路径)。
七、架构图¶
八、关键指标¶
- 锁等待时间。
- 锁冲突率。
- Redis QPS。
- 死锁率。
九、总结¶
超大并发锁架构: 1. 分片,并行。 2. 分级,不同场景不同锁。 3. 无锁化优先(乐观锁、异步)。 4. CP 系统做关键路径,AP 系统做性能路径。
不要一上来就分布式锁
先想能不能不用锁,再想能不能用本地锁,最后才分布式锁。