美文网首页
分布式锁

分布式锁

作者: ZMRWEGo | 来源:发表于2019-04-09 20:18 被阅读0次

分布式锁需要遵循的准则

  1. 可重入(同一线程可重复获得锁)
  2. 加锁解锁时的高可用,例如(一个(模块)宕掉,一直不释放锁)
  3. 公平锁 先来先得
  4. 希望该锁是阻塞的,没获得锁时,一直阻塞

数据库

缺点

  1. 单点
  2. 不可重入
  3. 非阻塞
  4. 不高可用(释放所)

可解决
两个数据库 同步
可重入 在表中加入字段主机信息和线程信息,下次加锁时,查看是不是当前锁的拥有者
高可用 设置锁的过期时间
阻塞 while循环 insert成功后跳出

redis

利用setNx方法(不存在则设置)
缺点

  1. 单点
  2. 不可重入
  3. 非公平
  4. 非阻塞
  5. 无过期时间
    以上问题均可解决
    但是redis的同步策略不是强一致性的,在并发条件下会导致节点锁的状态信息不一致。

zookeeper

可以很好的解决上述问题

  1. 可重入
    把客户端主机信息 线程信息写入节点
  2. 高可用
    zk检测到客户端断开后自动删除节点
  3. 公平性
    zk创建节点是有序的,每次通知最小节点获取锁
  4. 弱一致性(最终一致性)
    脑裂问题:https://blog.csdn.net/varyall/article/details/80150660

相关文章

  • 分布式锁

    为什么要用分布式锁 数据库乐观锁redis分布式锁zookeeper分布式锁 使用分布式锁的场景 实现分布式锁的方...

  • 什么是分布式锁?几种分布式锁分别是怎么实现的?

    一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资...

  • 4:Redis 分布式锁 (文末有项目连接)

    1:什么是缓存分布式锁 2:分布式锁的关键代码 3:业务代码使用分布式缓存锁 4:业务代码使用分布式缓存锁 5:测...

  • 锁(2)-- 分布式锁

    前言: 锁分3种:java锁、分布式锁、DB锁 分布式锁的几种实现方式 目前几乎很多大型网站及应用都是分布式部署...

  • java锁的概念

    参考文档探究分布式并发锁并发编程-锁的发展和主流分布式锁比较总结从构建分布式秒杀系统聊聊分布式锁探索并发编程(六)...

  • Redis实现分布式锁

    分布式下的分布式锁一般实现有三种: 基于数据库的乐观锁 基于redis的分布式锁 基于zookeeper的分布式锁...

  • 分布式锁

    为什么要用分布式锁? 分布式锁是悲观锁的实现; 如果采用乐观锁的方案就用不着分布式锁了。 能用乐观锁的地方尽量用乐...

  • 3.10:分布式锁

    本文将梳理微服务架构下,分布式锁的常用方案。整体包含以下三部分: 分布式锁的提出 分布式锁主流方案 分布式锁选择 ...

  • Redis实现分布式锁

    1. 分布式锁分类 数据库乐观锁 基于Redis的分布式锁 基于ZooKeeper的分布式锁 2. 组件依赖 po...

  • 大佬浅谈分布式锁

    redis 实现 redis 分布锁一、redis 实现分布式锁(可重入锁)redission 实现分布式锁1、对...

网友评论

      本文标题:分布式锁

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