# 分布式锁本质

By [Faker](https://paragraph.com/@faker-2) · 2022-05-14

---

分布式锁本质上属于分布式系统：假如锁用一个int来实现，它的值代表拿到锁的holder，0表示锁空闲。

那么分布式锁本质是consensus问题。

既然是consensus问题，很多朋友自然而然联想到paxos。然而，分布式系统有一个非常重要的FLP定理，它揭示了在异步网络下，任何共识算法不可能同时满足**safety**和**liveness**。

而我们知道，paxos是满足safety属性的。

综上，结论为：基于异步网络下，任何基于分布式锁的算法和实现，safety和liveness不可兼得，因此，要么存在大家都拿不到锁的情况（liveness不满足），要么可能会有多个节点认为自己都拿到锁（safety不满足）。不可能存在“完美”的实现。

任何一篇分布式锁文章，都可以尝试用这种观点去审视。

---

*Originally published on [Faker](https://paragraph.com/@faker-2/31LIZ8vlvwRRwqSFvNXi)*
