redis有红锁机制
zookeeper有ZAB协议。
两者都是必须超过一半的节点响应成功才算成功
那为什么基于redlock还是有可能会加锁失败?而zookeeper则认为可以保证一定能一致呢?
比如网上常举例的,redis有A B C D E五个节点,现在A B C 写入了一个锁,然后C还没来得及持久化就重启,或者C突然不可用被踢出,又新加了一个节点F。客户端2在D E F上加了同一把锁成功。
那zookeeper就没有上述问题吗?
再者,它加锁加的是一个临时有序节点,那如果这个节点自己崩溃了呢?客户端认为获取到了这把锁,然后这个节点自己崩溃了,那客户端2是不是就可以加锁了?
Martin 和 antirez 两位大佬就 RedLock 是否安全在很多年前展开过一次讨论,那次讨论很有名,网上也有大把的解读。
非要说一个结论的话就是:所有带超时机制的分布式锁,都无法在某个节点取得锁之后完美解决 NPC 问题。因此 Zookeeper 同样也不是百分百安全的。
P.S. NPC 即 Network Delay, Process Pause, Clock Drift 三个分布式问题的首字母缩写。
Redis RedLock 的设计目标是在分布式系统中提供一种相对可靠的锁机制,但它并不保证绝对的一致性,这主要源于 Redis 的几个特性:
相比之下,Zookeeper 通过其 ZAB(ZooKeeper Atomic Broadcast)协议提供了更强的一致性保障:
对于 Zookeeper 节点崩溃的情况,由于它使用了临时有序节点,并且这些节点与客户端会话绑定,因此当客户端崩溃时,其会话会超时,导致临时节点被删除。这确保了即使客户端崩溃,锁也能被正确释放,其他客户端可以安全地获取锁。
综上所述,Redis RedLock 因其基于内存和可能存在的持久化延迟,存在锁状态不一致的风险,而 Zookeeper 通过其强一致性的设计和数据持久化机制,提供了更高的锁一致性保障。
本文向大家介绍Zookeeper 如何实现分布式锁?相关面试题,主要包含被问及Zookeeper 如何实现分布式锁?时的应答技巧和注意事项,需要的朋友参考一下 分布式锁的实现方式有很多种,比如 、数据库 、 等。个人认为 在实现分布式锁这方面是非常非常简单的。 上面我们已经提到过了 zk在高并发的情况下保证节点创建的全局唯一性,这玩意一看就知道能干啥了。实现互斥锁呗,又因为能在分布式的情况下,所以
主要内容:一、写在前面,二、ZooKeeper分布式锁机制,三、总结一、写在前面 之前写过一篇文章:《都2022年了,出去面试连分布式锁的源码你都不会画?》,给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的,这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理。 同理,我是直接基于比较常用的Curator这个开源框架,聊一下这个框架对ZooKeeper(以下简称zk)分布式锁的实现。 一般除了大公司是自行封装分布式锁框架之外,建议
主要内容:实例分布式锁是控制分布式系统之间同步访问共享资源的一种方式。 下面介绍 zookeeper 如何实现分布式锁,讲解排他锁和共享锁两类分布式锁。 排他锁 排他锁(Exclusive Locks),又被称为写锁或独占锁,如果事务T1对数据对象O1加上排他锁,那么整个加锁期间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能进行读或写。 定义锁: 实现方式: 利用 zookeeper 的同级节点的
主要内容:写在前面,ZooKeeper分布式锁机制写在前面 之前写过一篇文章(《Redis 分布式锁,没它真不行!》),给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的,这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理。 同理,我是直接基于比较常用的Curator这个开源框架,聊一下这个框架对ZooKeeper(以下简称zk)分布式锁的实现。 一般除了大公司是自行封装分布式锁框架之外,建议大家用这些开源框架封
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。 面试开始, 直入正题。 面试官: 你有没有参与过秒杀系统的设计? 我: 没有,我平时都是开发后台管理系统、OA办公系统、内部管理系统,从来没有开发过秒杀系统。 面试官: 嗯...,小伙子很实诚。今天就先到这里吧,后面有消息会主动联系你。 后面还可能有消息吗?你们啥时候主动联系过
主要内容:一、写在前面,二、Redisson实现Redis分布式锁的底层原理一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。 所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。 说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就