1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Update Redlock分布式锁.md

This commit is contained in:
抱紧我的小鲤鱼 2019-05-09 15:44:34 +08:00 committed by GitHub
parent 3a1a9e2a78
commit cae1e93e0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -28,7 +28,7 @@ end
算法很易懂,起 5 个 master 节点分布在不同的机房尽量保证可用性。为了获得锁client 会进行如下操作: 算法很易懂,起 5 个 master 节点分布在不同的机房尽量保证可用性。为了获得锁client 会进行如下操作:
1. 得到当前的时间,微单位 1. 得到当前的时间,微单位
2. 尝试顺序地在 5 个实例上申请锁,当然需要使用相同的 key 和 random value这里一个 client 需要合理设置与 master 节点沟通的 timeout 大小,避免长时间和一个 fail 了的节点浪费时间 2. 尝试顺序地在 5 个实例上申请锁,当然需要使用相同的 key 和 random value这里一个 client 需要合理设置与 master 节点沟通的 timeout 大小,避免长时间和一个 fail 了的节点浪费时间
3. 当 client 在大于等于 3 个 master 上成功申请到锁的时候且它会计算申请锁消耗了多少时间这部分消耗的时间采用获得锁的当下时间减去第一步获得的时间戳得到如果锁的持续时长lock validity time比流逝的时间多的话那么锁就真正获取到了。 3. 当 client 在大于等于 3 个 master 上成功申请到锁的时候且它会计算申请锁消耗了多少时间这部分消耗的时间采用获得锁的当下时间减去第一步获得的时间戳得到如果锁的持续时长lock validity time比流逝的时间多的话那么锁就真正获取到了。
4. 如果锁申请到了,那么锁真正的 lock validity time 应该是 originlock validity time - 申请锁期间流逝的时间 4. 如果锁申请到了,那么锁真正的 lock validity time 应该是 originlock validity time - 申请锁期间流逝的时间