面试知识库

分布式锁 → 事务 → 一致性方案 追问链#

追问路径#

涉及知识点#

核心串联逻辑#

  1. 锁方案选型:Redis性能最高(10万+ QPS)但有主从切换丢锁风险;ZK强一致但性能低(~万级QPS);MySQL最简单但性能最差
  2. Redisson看门狗:解决”锁过期业务未完成”——后台线程定时续期,客户端宕机则不续期自动释放
  3. 分布式事务谱系:强一致(2PC/XA → Seata AT) → 最终一致(TCC → SAGA → 事务消息),侵入性和性能递减
  4. CAP落地:CP选ZK/etcd(金融转账),AP选Nacos临时实例/Eureka(电商服务发现)
  5. 代码示例
    // Redisson分布式锁用法
    RLock lock = redisson.getLock("order:" + orderId);
    try {
        if (lock.tryLock(5, 30, TimeUnit.SECONDS)) { // 等待5s,持有30s
            // 看门狗自动续期,业务完成后unlock取消
        }
    } finally { lock.unlock(); }
    java

面试回答串联#

30秒速答#

“分布式锁首选Redis(SET NX EX)配合Redisson看门狗续期,ZK强一致但性能低。分布式事务强一致用Seata AT,最终一致推荐事务消息。CAP中P必选,根据业务选CP或AP,BASE是AP方向的落地实践。“

2分钟展开答#

“分布式锁三种方案:Redis用SET key NX EX加锁+Lua脚本原子释放,性能最高达10万+ QPS,但主从切换时有丢锁风险。Redisson通过看门狗机制解决锁过期问题——默认30s过期,后台每10s续期,客户端宕机则自然超时释放。ZooKeeper用临时顺序节点实现,天然不存在过期问题且CP强一致,但性能低一个数量级。分布式事务方案从强到弱:2PC/XA全局锁定性能差,Seata AT通过undo log实现自动补偿比较轻量;TCC由业务实现Try/Confirm/Cancel三阶段侵入性大但灵活;事务消息通过半消息+本地事务+回查实现最终一致性,是大多数场景的首选。CAP定理中P(分区容错)必须保证,金融场景选CP保证一致性,电商场景选AP保证可用性。BASE理论是AP方向的实践落地——基本可用(降级服务)、软状态(允许中间态)、最终一致(异步补偿)。“

相关追问链#