分布式锁方案—redlock算法

本文探讨了在分布式系统中实现锁的必要性,详细解析了使用Redis单节点实现分布式锁的问题及解决方案,如超时、释放锁策略等。接着介绍了Redlock算法,通过多个Redis节点提高可用性,但同时也分析了其面临的问题,如重启、响应失败等挑战,并提及了Martin Kleppmann对其提出的质疑。

分布式系统的复杂之处在于在不同进程需要互斥的访问共享资源时的问题。例如,

1、分布式ID,当数据水平拆分之后,如何保证ID的唯一性,并且尽可能的短;

2、秒杀系统中的库存,数据结构为商品ID,剩余数量,每次成交会减掉响应数量。如何保证不会超卖;

锁的目的是确保多个节点、进程做同样工作的时候,只有一个可以执行成功。有且只有一次。

 

实现分布式锁有很多方案,例如基于数据库实现,基于zookeeper实现,如果吞吐量还是不能满足,比较广泛的做法是用分布式缓存来实现。

一、Redis单节点方式实现

核心就是围绕SETNX(SETIF NOT EXISTS)实现,

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值