MST

星途 面试题库

面试题:分布式系统中分布式锁的常见安全问题有哪些

在分布式系统里,分布式锁用于保证在分布式环境下对共享资源的互斥访问。请阐述在实际应用中,分布式锁可能会出现哪些常见的安全问题,并简要说明原因。
39.2万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

常见安全问题及原因

  1. 锁超时问题
    • 原因:为避免死锁,通常会给分布式锁设置超时时间。但如果业务执行时间超过锁的超时时间,锁自动释放,其他进程可能获取到锁,导致同一资源被多个进程同时操作。
  2. 锁误释放问题
    • 原因:假设一个进程获取到锁,在执行过程中由于网络波动等原因与锁服务短暂失联,锁服务可能误判该进程已放弃锁而释放。此时其他进程获取到锁,造成数据一致性问题。或者在使用如 Redis 实现分布式锁时,使用 del 命令释放锁,如果在获取锁和释放锁之间存在时间间隔,且另一个进程在这个间隔内获取到了锁,当原进程执行释放锁操作时,就会误释放其他进程的锁。
  3. 可重入性问题
    • 原因:某些分布式锁实现不支持可重入,即同一进程在持有锁的情况下再次请求锁会失败。这在一些递归调用或需要多次获取锁的业务场景中会导致问题,破坏业务逻辑的正常执行。
  4. 单点故障问题
    • 原因:如果分布式锁基于单个节点(如单个 Redis 实例)实现,该节点一旦发生故障,可能导致锁服务不可用,影响整个分布式系统的正常运行。
  5. 网络分区问题
    • 原因:在分布式系统中,网络分区可能导致部分节点之间无法通信。此时可能出现不同分区内的进程各自获取到锁,破坏了锁的互斥性。 例如,使用 ZooKeeper 实现分布式锁时,若发生网络分区,不同分区内的节点可能各自认为自己持有锁。
  6. 锁竞争性能问题
    • 原因:当大量进程同时竞争分布式锁时,会产生高并发竞争。这可能导致系统性能下降,如频繁的网络请求、锁服务压力增大等,甚至引发死锁或活锁情况,影响系统的可用性和响应速度。