分布式锁的三种解决方案
lock必须手动释放。多个JVM是单个JVM的锁技术是没法解决的。多任务环境需要分布式锁,多任务即多JVM分布式锁:1.基于数据库的解决方法。Innodb支持行锁实现: 测试: 每隔10s看数据库,效率不高。无法优雅的实现的阻塞锁。因为要经常访问数据库,性能差2.基于Redis的锁3.基于Zookeeper的分布式的锁在市...
·
lock必须手动释放。
多个JVM是单个JVM的锁技术是没法解决的。
多任务环境需要分布式锁,多任务即多JVM
分布式锁:
1.基于数据库的解决方法。Innodb支持行锁
实现:
测试:
每隔10s看数据库,效率不高。无法优雅的实现的阻塞锁。
因为要经常访问数据库,性能差
2.基于Redis的锁
3.基于Zookeeper的分布式的锁
在市面上,大部分是使用ZooKeeper实现分布式锁。性能好,无死锁
zookeeper的数据结构。节点特性以及watcher机制。
每个节点都有值。
实现:
创建一个持久节点
创建一个临时节点
创建临时节点
创建的是持久性锁。
右边的尝试用zk创建锁,创建成功,就获得锁。
出现的问题,大家都去抢锁
第二种实现方式:
更多推荐
已为社区贡献7条内容
所有评论(0)