MST

星途 面试题库

面试题:分布式系统中分布式锁优化策略之锁粒度控制

在分布式系统中,锁粒度的控制对系统性能影响较大。请结合分布式锁的实现原理,谈谈如何在不同业务场景下合理选择锁粒度,并举例说明锁粒度过大或过小可能带来的问题及优化方法。
16.9万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

锁粒度控制与分布式锁原理关联

分布式锁通过在多个节点间共享一个锁资源,保证同一时间只有一个节点能获取锁执行特定操作。锁粒度指的是被锁定资源的范围大小。合理控制锁粒度能有效提升系统性能,这基于分布式锁实现原理中对资源独占性和并发访问控制的机制。

不同业务场景下锁粒度选择

  1. 高并发读多写少场景:适合细粒度锁。例如电商商品展示页,大量用户读取商品信息,但修改商品信息操作较少。可以为每个商品设置独立的锁,这样读操作基本不会相互影响,只有写商品信息时才锁定对应商品的锁,减少锁竞争,提高系统并发性能。
  2. 低并发且操作关联性强场景:适合粗粒度锁。比如银行转账操作,涉及两个账户的余额变动,需要保证操作的原子性。可以使用一个粗粒度锁锁定整个转账流程涉及的资源,避免出现部分操作成功部分失败的不一致情况。

锁粒度过大问题及优化方法

  1. 问题:会导致大量不必要的锁竞争,降低系统并发性能。例如在一个电商订单处理系统中,如果使用一个全局锁来处理所有订单,无论订单之间是否有关联,都要竞争这一把锁,会使很多请求处于等待状态,严重影响系统吞吐量。
  2. 优化方法:将粗粒度锁细化。按照订单类别、用户地域等维度进行划分,每个子部分使用单独的锁。比如按订单类别,分为实物商品订单锁、虚拟商品订单锁等,减少不同类别订单之间的锁竞争。

锁粒度过小问题及优化方法

  1. 问题:可能导致事务一致性难以保证,增加锁管理开销。比如在一个复杂的库存管理系统中,对每个库存商品的每个属性(如颜色、尺寸等)都设置单独锁,在更新库存时需要获取多个锁,若获取锁顺序不一致可能出现死锁,同时频繁获取和释放锁会增加系统开销。
  2. 优化方法:适当合并锁粒度。可以按商品大类设置锁,在更新库存时,先获取商品大类的锁,再进行具体属性更新,既能保证一定的并发性能,又能简化锁管理,降低死锁风险。