加载中...

Fencing token 是分布式锁服务在每次授予锁时颁发的单调递增编号。资源服务端记录已见过的最大编号,拒绝携带更小编号的写请求,从而"隔离"已过期却仍自认持锁的客户端。
仅靠带超时的分布式锁并不安全:客户端可能因 GC 停顿或网络延迟在锁过期后才发出写请求,此时锁已被他人获得,双写导致数据损坏。Martin Kleppmann 在与 Redlock 算法的著名论辩中系统阐述了这一问题。
ZooKeeper 的 znode 版本号(zxid)、Chubby 的锁序号(sequencer)都可充当 fencing token;使用时要求存储系统本身支持按编号做条件写入。若资源端无法校验令牌,则任何客户端侧的锁机制都只能作为效率优化而非正确性保证。

登录 后参与讨论
暂无讨论,来发表第一条评论吧