分布式锁是什么?为什么使用分布式锁?分布式锁实现方式?

一笑奈何 提交于 2020-02-06 20:25:07

分布式锁是多个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:获取锁的时候在持久化结点下创建临时时序结点。如果此临时时序结点是第一个结点就获取到锁。如果不是就监听前一个结点,当前一个结点消失变获取到锁。
释放锁的时候断开连接就可以删除结点

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!