Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

etcd 怎样用 Revision 和 Watch 实现锁竞争?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

竞争者由创建版本排队。尚未到队首的客户端等待比自己早一位的候选键删除,再重新检查前面是否还有人。

讲清原理

等待应从正确 revision 开始,避免查询后、订阅前错过删除。每次前驱离开后要重新确认自己的候选键仍存在,并按客户端库的错误处理继续。

多个锁竞争者按创建版本等待前驱
多个锁竞争者按创建版本等待前驱

例子与易错点

A、B、C 按序竞争。B 等 A,C 先等 B。A 消失后 B 最先推进,C 不必被这次变化一起唤醒。

延伸阅读 etcd 的 Revision 在锁里能做什么? · etcd 分布式锁的核心步骤是什么? · 如何避免 etcd 锁等待的羊群效应?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。