分布式锁原理与实现
- 01 为什么需要分布式锁
- 场景描述
- 02 分布式锁的实现方式有哪些
- 分布式锁思路分析
- 锁具有什么特点?
- 我们掌握的计算机技术中,有哪些能提供排他性?
- 常用分布式锁实现技术
- 基于数据库实现分布式锁
- 基于缓存实现分布式锁
- 基于zookeeper实现分布式锁
- ZooKeeper节点类型
- ZooKeeper典型应用场景
- 03 课程广告 25K+的高级研发工程师,只需系统学好下面的内容
01 为什么需要分布式锁 场景描述
- 小型电商网站,下单,生产有一定业务含义的唯一订单编号
- 如果同时有很多人下单…
- 如果单台服务器已无法撑起并发量… 怎么办?集群
- 在多台tomcat集群中如何确保订单编号唯一?
- 将订单编号生成独立为共享的服务
此时就需要用到分布式锁了
- 排他性:只有一个线程能获取到
- 阻塞性:其他未抢到的线程阻塞,直到锁释放出来,再抢。
- 可重入性:线程获得锁后,后续是否可重复获取该锁。
- 文件系统
- 数据库: 主键 唯一约束 for update
- 缓存 redis: setnx
- zookeeper 类似文件系统
- 性能较差,容易出现单点故障
- 锁没有失效时间,容易死锁
- 实现复杂
- 存在死锁 ( 或短时间死锁 ) 的可能
- 实现相对简单
- 可靠性高
- 性能较好
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。
特性:节点树数据结构,znode是一个根Unix文件系统路径相似的节点,可以往这个节点存储或获取数据;
- 持久节点 (PERSISTENT)
- 持久顺序节点 (PERSISTENT_SEQUENTIAL)
- 临时节点 (EPHEMERAL)
- 临时顺序节点 (EPHEMERAL_SEQUENTIAL)
- 数据发布订阅 (配置中心)
- 命名服务
- Master选举
- 集群管理
- 分布式队列
- 分布式锁
- 课程链接:CSDN分布式锁原理
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)