美文网首页
【分布式】分布式锁的实现

【分布式】分布式锁的实现

作者: 胖三斤66 | 来源:发表于2020-02-04 11:54 被阅读0次

    基于zookeeper的实现

    方案一

    获取锁:让多个 Client 同时创建一个临时节点,由于节点的唯一性,故此只会有一个 Client 创建成功。而创建成功的 Client 代表其持有该分布式锁。其余创建失败的 Clients 就在该节点上注册监听

    释放锁:利用临时节点「会话中断,节点删除」的特点,实现锁的释放。

    方案二

    获取锁:让多个 Client 各自创建一个 临时顺序节点,每次让顺序号最小的节点的 Client 持有分布式锁。让每个 Client 监听最后一个序号比它小的节点。

    释放锁:同样,利用临时节点「会话中断,节点删除」的特点,实现锁的释放。

    进阶:实现读写锁

    读写锁:读锁允许多个读请求同时完成;写锁只允许一个写请求进行;当上了写锁时,不允许上读锁;当上了读锁时,不允许上写锁。

    当发送读请求时,先创建一个临时顺序节点,然后进行对比

    • 当没有比自己更小的节点,或比自己小的节点都是读请求时,直接获取读锁
    • 当有比自己小的节点,同时有写请求时,就监听最后一个序号比自己小的写请求节点。

    当发送写请求时,先创建一个临时顺序节点,然后进行对比

    • 当没有比自己更小的节点时,直接获取写锁
    • 当有比自己更小的节点时,监听最后一个序号比自己小的节点

    参考

    [1] 🔥🔥🔥万字带你入门Zookeeper - 掘金

    基于Redis的实现

    未完待续

    相关文章

      网友评论

          本文标题:【分布式】分布式锁的实现

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