分布式锁解决方案都有哪些?

一提到分布式,不管是网上的文章,还是一起群友,都是说使用Redis来实现分布式锁。除了使用Redis,一般在大型项目中都会使用哪些技术来实现分布式锁呢?其中都有哪些优缺点呢?

平常大家使用Redis实现分布式锁,是如何保证高可用的?使用官方的RedLock?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 10

分布式锁是用于在分布式系统中实现互斥访问共享资源的一种机制。以下是几种常见的分布式锁的实现方案:

基于数据库:使用数据库的唯一性约束或乐观锁机制来实现分布式锁。每个节点尝试在数据库中创建一个特定的唯一标识符(例如表的行或键值对),成功创建则表示获取到锁,失败则表示锁已经被其他节点获取。

基于缓存:使用分布式缓存(如Redis、Memcached)来实现分布式锁。通过在缓存中设置一个特定的键值对来表示锁的状态,节点在获取锁时尝试在缓存中创建该键值对,成功创建则表示获取到锁,其他节点在此时尝试获取锁时则会失败。

基于ZooKeeper:ZooKeeper是一个高性能的分布式协调服务,可用于实现分布式锁。通过创建临时有序节点,节点谁创建节点成功,则表示获取到锁,其他节点按顺序排队等待锁的释放。

基于信号量:使用分布式信号量来实现分布式锁。如使用ZooKeeper的分布式信号量实现,每个节点尝试申请信号量,成功则表示获取到锁,失败则表示锁已经被其他节点获取。

这些实现方案各有优缺点,应根据具体需求和系统环境选择适合的方案。同时,分布式锁的实现需要考虑并发性、可重入性、死锁等问题,确保锁的正确性和性能。

9个月前 评论
raybon 9个月前
Latent (作者) 9个月前
raybon 9个月前

我觉得 RedLock 是个伪概念

9个月前 评论
Mandy的名字被占用了_ (楼主) 9个月前
fatrbaby

就我知道的有三种:

  • redis
  • etcd
  • ZooKeeper
9个月前 评论

实现和机制不同

9个月前 评论
fatrbaby 9个月前

基于redis 基本都是redlock实现的 这个问题就是需要看你追求的 cap模型 redis redllock 是cp模型

9个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!