redis和zk实现分布式锁的优缺点

Redis实现

优点:性能好

缺点:

对某个 redismaster 实例,写入了 myLock 这种锁 key 的 value,此时会异步复制给对应的 masterslave 实例。
但是这个过程中一旦发生 redismaster 宕机,主备切换,redisslave 变为了 redismaster。
接着就会导致,客户端 2 来尝试加锁的时候,在新的 redismaster 上完成了加锁,而客户端 1 也以为自己成功加了锁。
此时就会导致多个客户端对一个分布式锁完成了加锁。
这时系统在业务语义上一定会出现问题,导致各种脏数据的产生。
所以这个就是 rediscluster,或者是 redismaster-slave 架构的主从异步复制导致的 redis 分布式锁的最大缺陷:在 redismaster 实例宕机的时候,可能导致多个客户端同时完成加锁。

ZK实现

优点:高可靠 zk本身通过leader+quorum机制保障高可靠。

缺点:ZooKeeper实现的分布式锁,性能并不太高。为啥呢?
因为每次在创建锁和释放锁的过程中,都要动态创建、销毁瞬时节点来实现锁功能。大家知道,ZK中创建和删除节点只能通过Leader服务器来执行,然后Leader服务器还需要将数据同步到所有的Follower机器上,这样频繁的网络通信,性能的短板是非常突出的。
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值