首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有TTL的分布式锁

带有TTL的分布式锁
EN

Stack Overflow用户
提问于 2022-05-12 04:47:49
回答 1查看 115关注 0票数 0

当我们有一个带有TTL的分布式锁时,锁可能会因为TTL配置而过期,而拥有该锁的进程还没有完成计算,并且它将继续操作它获得锁的对象,因为它不知道该锁已经过期。我们如何才能避免这种情况呢?

EN

回答 1

Stack Overflow用户

发布于 2022-05-13 04:04:11

您正在寻找的解决方案称为“击剑令牌”。长话短说-每个突变命令/操作都应该包括令牌,执行器应该检查令牌是否仍然有效。

令牌只是一个数字,称为“术语”,每次发出新的锁时,术语就会增加。

执行器有一个简单的逻辑,它从不接受带有旧术语的命令。

可以说,这是真正避免任何与锁相关的问题的唯一选择。比如拥有时间戳,或者显式的锁版本--所有这些都天生就容易出现各种种族问题。

我推荐的另一个指针-- Red算法;以及它所存在的问题--这里有更多介绍:https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72210246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档