分布式锁的简单总结

编程

为什么需要分布式锁" 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

回到顶部