分布式锁深度剖析-疫情不断,学习怎能断

原创
2020/02/20 22:04
阅读数 977

疫情不断,学习怎能断,今天主要学习分布式锁相关原理

分布式锁深度剖析

1、分布式锁的应用场景

生产一个具体业务场景的唯一订单编号,并发场景下订单号生产会重复嘛?

2、分布式锁的原理、实现方式

锁具有的特点:

  • 排他性:只有一个线程能获取

    在计算机技术中,可提供排他性的有:文件系统,数据库(主键 唯一约束 )、缓存redis(setnx)、zookeeper(类似文件系统)

  • 阻塞性:其他未抢到的线程阻塞,直到锁释放出来,再抢

  • 可重入性:线程获得锁后,后续是否可重复获取该锁

常用分布式锁实现技术:

  • 基于数据库实现

    性能差,容易出现单点故障,锁没有失效时间,容易死锁

  • 基于缓存实现

    实现复杂,性能好,存在死锁(或段时间死锁)的可能

  • 基于Zookeeper实现

    实现相对简单、可靠性高、性能较好,不出现死锁

3、基于Zookeeper的分布式锁的实现

Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,Hadoop和Hbase的重要组件。

Zookeeper特点:

  • 节点数数据结构,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据;
  • 通过客户端可对znode进行增删改查操作,还可以注册watcher监控znode

Zookeeper节点类型:(在同一个znode点下,不允许存在同名节点)

  • 持久节点
  • 持久顺序节点
  • 临时节点
  • 临时顺序节点

Zookeeeper应用场景

  • 数据发布订阅(配置中心)

  • 命名服务

  • Master选举

  • 集群管理

  • 分布式队列

  • 分布式锁

Zookeeper实现分布式锁

  • 特性1实现:同父的子节点不可重名

    不可以用持久节点(万一持有锁的进程挂了,可就死锁了)

    这种会出现惊群效应,在集群规模较大的环境中带来的危害:

    巨大的服务器性能损耗

    网络冲击

    可能造成服务挂了

  • 特性2实现:临时顺序节点(解决惊群效应)

 

4、Redisson分布式锁的实现

分布式锁实现

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部