分布式系统的复杂之处在于在不同进程需要互斥的访问共享资源时的问题。例如,
1、分布式ID,当数据水平拆分之后,如何保证ID的唯一性,并且尽可能的短;
2、秒杀系统中的库存,数据结构为商品ID,剩余数量,每次成交会减掉响应数量。如何保证不会超卖;
锁的目的是确保多个节点、进程做同样工作的时候,只有一个可以执行成功。有且只有一次。
实现分布式锁有很多方案,例如基于数据库实现,基于zookeeper实现,如果吞吐量还是不能满足,比较广泛的做法是用分布式缓存来实现。
一、Redis单节点方式实现
核心就是围绕SETNX(SETIF NOT EXISTS)实现,


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

1201

被折叠的 条评论
为什么被折叠?



