美文网首页Java一些收藏zookeeper
【5分钟背八股】ZooKeeper和Reids做分布式锁的区别?

【5分钟背八股】ZooKeeper和Reids做分布式锁的区别?

作者: 废柴程序员 | 来源:发表于2022-06-10 22:09 被阅读0次

    Reids:

    1. Redis只保证最终一致性,副本间的数据复制是异步进行(Set是写,Get是读,Reids集群一般是读写分离架构,存在主从同步延迟情况),主从切换之后可能有部分数据没有复制过去可能会 「丢失锁」 情况,故强一致性要求的业务不推荐使用Reids,推荐使用zk。
    2. Redis集群各方法的响应时间均为最低。随着并发量和业务数量的提升其响应时间会有明显上升(公网集群影响因素偏大),但是极限qps可以达到最大且基本无异常

    ZooKeeper:

    1. 使用ZooKeeper集群,锁原理是使用ZooKeeper的临时顺序节点,临时顺序节点的生命周期在Client与集群的Session结束时结束。因此如果某个Client节点存在网络问题,与ZooKeeper集群断开连接,Session超时同样会导致锁被错误的释放(导致被其他线程错误地持有),因此ZooKeeper也无法保证完全一致。
    2. ZK具有较好的稳定性;响应时间抖动很小,没有出现异常。但是随着并发量和业务数量的提升其响应时间和qps会明显下降。

    总结:

    1. Zookeeper每次进行锁操作前都要创建若干节点,完成后要释放节点,会浪费很多时间;
    2. 而Redis只是简单的数据操作,没有这个问题。
    【5分钟背八股】48:ZooKeeper和Reids做分布式锁的区别?.png

    推荐阅读【5分钟背八股】MySQL如何做分布式锁??

    相关文章

      网友评论

        本文标题:【5分钟背八股】ZooKeeper和Reids做分布式锁的区别?

        本文链接:https://www.haomeiwen.com/subject/wlzbmrtx.html