围栏令牌
- 获取响应
A中的token是一个 单调递增的 u64。无论是哪个 key、第几次获取,其值都必定大于此前签发过的 任何 token。 - 在单机模式下,由服务器的全局计数器保证单调性;在集群模式下,则是 通过共识复制的签发序号 —— token 会在已提交的命令被应用的那一刻被 确定性地分配,因此每个节点都会计算出相同的值,并且在 leader 变更后依然 持续递增。
- 如果受保护的资源坚持一条规则 —— "拒绝任何低于已见过的最新令牌的请求" —— 就能阻止
lease过期后延迟醒来的旧持有者(携带较低的 token)进行访问 —— 这是抵御客户端侧延迟(例如 GC 暂停,锁服务器对此无能为力)的最后一道防线。
促成这一校验必要性的具体场景见工作原理。