1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-20 22:17:09 +08:00

Update Redlock分布式锁.md

This commit is contained in:
Young Chen 2018-09-20 15:35:49 +08:00 committed by GitHub
parent 227811711e
commit 04b4662f78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -45,6 +45,3 @@ end
## 性能、崩溃恢复和 fsync
如果我们的节点没有持久化机制client 从 5 个 master 中的 3 个处获得了锁,然后其中一个重启了,这是注意 **整个环境中又出现了 3 个 master 可供另一个 client 申请同一把锁!** 违反了互斥性。如果我们开启了 AOF 持久化那么情况会稍微好转一些,因为 Redis 的过期机制是语义层面实现的,所以在 server 挂了的时候时间依旧在流逝重启之后锁状态不会受到污染。但是考虑断电之后呢AOF部分命令没来得及刷回磁盘直接丢失了除非我们配置刷回策略为 fsnyc = always但这会损伤性能。解决这个问题的方法是当一个节点重启之后我们规定在 max TTL 期间它是不可用的,这样它就不会干扰原本已经申请到的锁,等到它 crash 前的那部分锁都过期了,环境不存在历史锁了,那么再把这个节点加进来正常工作。
## License
* 原文 [基于 Redis 的分布式锁 Redlock](https://zhuanlan.zhihu.com/p/40915772)