【zookeeper分布式锁】

文章目录

  • 1.Zookeeper 分布式锁实战

1.Zookeeper 分布式锁实战

1.1 什么是分布式锁
在单体的应用开发场景中涉及并发同步的时候,大家往往采用Synchronized(同步)或者其他同一个
JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开发场景中,就需要一种更加高级
的锁机制来处理跨机器的进程之间的数据同步问题,这种跨机器的锁就是分布式锁。
目前分布式锁,比较成熟、主流的方案:
(1)基于数据库的分布式锁。这种方案使用数据库的事务和锁机制来实现分布式锁。虽然在某些场景
下可以实现简单的分布式锁,但由于数据库操作的性能相对较低,并且可能面临锁表的风险,所以一
般不是首选方案。
(2)基于Redis的分布式锁。Redis分布式锁是一种常见且成熟的方案,适用于高并发、性能要求高且
可靠性问题可以通过其他方案弥补的场景。Redis提供了高效的内存存储和原子操作,可以快速获取和
释放锁。它在大规模的分布式系统中得到广泛应用。
(3)基于ZooKeeper的分布式锁。这种方案适用于对高可靠性和一致性要求较高,而并发量不是太高
的场景。由于ZooKeeper的选举机制和强一致性保证,它可以处理更复杂的分布式锁场景,但相对于
Redis而言,性能可能较低。

1.2 基于数据库设计思路
可以利用数据库的唯一索引来实现,唯一索引天然具有排他性

1.3 基于Zookeeper设计思路一
使用临时 znode 来表示获取锁的请求,创建 znode成功的用户拿到锁。

1.4 基于Zookeeper设计思路二
使用临时有序znode来表示获取锁的请求,创建最小后缀数字 znode 的用户成功拿到锁。
1.5 Curator 可重入分布式锁工作流程
https://www.processon.com/view/link/5cadacd1e4b0375afbef4320
1.6 总结
优点:ZooKeeper分布式锁(如InterProcessMutex),具备高可用、可重入、阻塞锁特性,可解决
失效死锁问题,使用起来也较为简单。
缺点:因为需要频繁的创建和删除节点,性能上不如Redis。
在高性能、高并发的应用场景下,不建议使用ZooKeeper的分布式锁。而由于ZooKeeper的高可靠
性,因此在并发量不是太高的应用场景中,还是推荐使用ZooKeeper的分布式锁。

相关推荐

  1. zookeeper分布式

    2023-12-29 01:42:01       34 阅读
  2. ZooKeeper分布式

    2023-12-29 01:42:01       48 阅读
  3. Zookeeper实现分布式

    2023-12-29 01:42:01       40 阅读
  4. ZooKeeper分布式

    2023-12-29 01:42:01       41 阅读
  5. ZooKeeper实现分布式

    2023-12-29 01:42:01       21 阅读
  6. Zookeeper实现分布式(Zk分布式

    2023-12-29 01:42:01       39 阅读
  7. 使用ZooKeeper实现分布式

    2023-12-29 01:42:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 01:42:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 01:42:01       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 01:42:01       87 阅读
  4. Python语言-面向对象

    2023-12-29 01:42:01       96 阅读

热门阅读

  1. USACO08FEB Hotel G

    2023-12-29 01:42:01       51 阅读
  2. C语言初学8:函数和作用域

    2023-12-29 01:42:01       53 阅读
  3. 深入理解技术内容运营

    2023-12-29 01:42:01       51 阅读
  4. 米贸搜|LinkedIn和Facebook在营销上有哪些区别?

    2023-12-29 01:42:01       41 阅读
  5. Audio Toolbox

    2023-12-29 01:42:01       54 阅读
  6. python 1200例——【11】鸡兔同笼

    2023-12-29 01:42:01       49 阅读
  7. 数字反转(升级版)#洛谷

    2023-12-29 01:42:01       43 阅读
  8. node实现对git仓库的管理

    2023-12-29 01:42:01       56 阅读
  9. 递归---选数

    2023-12-29 01:42:01       55 阅读