分布式锁是多个jvm可以共享的锁。
传统java并发API只适用于单个jvm,多个jvm对临界区访问就无法使用,所以需要分布式锁。
实现方式1:
使用mysql数据库:创建一个表使用方法名字段(需要加锁的字段)作为唯一索引,获取锁的时候执行插入,释放锁的时候执行删除
缺点:1.不阻塞 2.单点可用性差 3.没有失效时间 4.不可重入
改进方式: 1.循环获取锁 2.集群方式 3.设置定时任务 5.加入一个字段统计入锁次数
实现方式2:
使用redis:获取锁set 释放锁 del
缺点:1.不阻塞 2.单点可用性差 3.没有失效时间 4.不可重入
改进方式: 1.循环获取锁 2.集群方式 3.设置过期时间 5.加入一个字段统计入锁次数
实现方式3:
使用zookeeper:获取锁的时候在持久化结点下创建临时时序结点。如果此临时时序结点是第一个结点就获取到锁。如果不是就监听前一个结点,当前一个结点消失变获取到锁。
释放锁的时候断开连接就可以删除结点
分布式锁是什么?为什么使用分布式锁?分布式锁实现方式?
最新推荐文章于 2020-09-17 00:02:22 发布
本文深入探讨了分布式锁的三种实现方式:使用mysql数据库、redis和zookeeper。详细分析了每种方式的优缺点,并提出了相应的改进措施,如循环获取锁、集群方式、设置过期时间等。
525

被折叠的 条评论
为什么被折叠?



