分布式锁的简单总结
为什么需要分布式锁" title="分布式锁">分布式锁
直接作用是保证同一时刻同一代码不被重复执行, 更深一层目的其实是为了保证“功效性”和“正确性”.
- 功效性(Efficiency)
即节省计算机资源, 减少不必要的重复执行. 如果只是单纯地保证功效性, 一般可以容忍锁出现失误, 因为不会对执行结果造成影响.
- 准确性(Correctness)
即程序执行结果不会出现错误, 数据不会出现不一致. 这种场景下, 一般不可容忍锁出现失误.
如何实现分布式锁
可以看到网上有很多民众给出了自己的demo, 但仔细研究发现demo离“工业级”还是有一定差距. 如果要使用分布式锁, 我们最好去参考或直接使用一些比较成熟的框架.
分布式环境下, 实现锁机制, 需要基于一个集中式存储, 比如: mysql(或其他数据库)、redis、zookeeper, 简单对比如下:
中间件
原理
特点
参考框架
mysql
InnoDB事务引擎的行级锁
性能差
Quartz
redis
原子命令setNX
性能高
单实例实现简单
集群实现稍复杂
Redisson
zookeeper
临时顺序节点
实现复杂
Curator
曾经基于单实例redis, 写过一个简单直白的分布式锁 https://my.oschina.net/wangxu3655/blog/3063459 , 在生产环境的部分系统里一直正常使用.
以上是 分布式锁的简单总结 的全部内容, 来源链接: utcz.com/z/511721.html