我想知道是否有可能防止两次使用租约。
什么是租约?
租约是一种令牌,它在分布式设置中一次恰好分配给一个节点。租约的一个示例用例是当时只有一个节点可以写入数据库。
什么是隔离令牌,为什么要使用它?
使用如上所述的租约,我们可能会遇到问题。节点可能会停止(例如,由于世界垃圾收集而停止),并且仍然认为其租约有效,而实际上却是无效的。如果我们给每个租约一个隔离令牌(增量整数),则数据库可能会拒绝使用旧的隔离令牌的租约。
我的问题:
图片taken from Designing Data-Intensive Applications, p. 303
客户端1在这里被拒绝,因为他使用的是旧的防护令牌。但这仅是因为客户端2在客户端1之前使用了他的令牌,并且商店知道当前的隔离令牌已增加。 我们如何确保在使用过期租约时,即使客户端1在客户端2尝试写之前尝试写,客户端1也将被拒绝?