首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
分布式锁全览
架构染色
创建于2022-11-15
订阅专栏
全面介绍如何基于Redis、ZK、etcd、mysql等开发分布式锁,它们的特性原理、实现机制是怎样,以及如何抽象、适配、加固后达到生产安全使用。
等 50 人订阅
共11篇文章
创建于2022-11-15
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
你不知道的Redis SET NX 指令不保障原子性的应对之法
因Jedis设计,导致重试逻辑内部把通信异常吞掉了,并重新发出执行指令的请求。就会导致用户层看到 `SET` 返回的是空,但key 实际已存在*。我们找到应对的办法,只要判断出是自己加的锁。
别再随意说 Redis 的 SET 保障原子性,在客户端不一定
分布式系统有一个特点,就是无论你学习积累多少知识点,只要在分布式的战线中,就总能遇到各种超出主观意识的神奇问题。
【自省】Thread的理论很简单吧,实战中什么情况要用setDaemon、 interrupt 和 join ?
当线程正在执行wait()、sleep()、join()方法时线程是处于【waitting】状态,内部仍会不断地检查中断状态的值,interrupt方法会改变目标线程的中断状态
【自省】线程池里的定时任务跑的可欢了,可咋停掉特定的任务?
线程池定时任务可取消,但使用需注意 1. 任务中未捕获的异常能导致后续执行不再执行。 2. 任务中未捕获的异常不会外抛,外部感知不到。 3. 任务中的异常,需在任务逻辑内捕获并记录,否则无处可知。
【自省】使用Executors.xxx违反阿里Java代码规范,那还不写定时任务了?
scheduleAtFixedRate`的逻辑结论是:如果上一个任务的执行时间大于等待时间,任务结束后,下一个任务马上执行。如果上一个任务的执行时间小于等待时间,任务结束。
分布式锁主动续期的入门级实现-自省 | 简约而不简单
如果某个客户端获得锁之后处理时间超过最大约定时间,或者持锁期间内发生了故障导致无法主动释放锁,其持有的锁也能够被其他机制正确释放,并保证后续其它客户端也能加锁,整个处理流程继续正常执行。
分布式锁上-初探
虽然大佬Lamport 在论文 中早就证明了使用状态机(如共识算法)就能够去中心化解决多进程互斥问题,但我们还是会更偏向使用分布式锁。
分布式锁实战-偶遇 etcd 后就想抛弃 Redis ?
虽然Kubernetes 给云原生时代带来了颠覆性的新气象,但却很少人了解被钦定作为其后端存储的 etcd ,本篇从分布式锁视角梳理etcd的各种机制,探索基于etcd的锁实现为何如此优雅。
分布式锁中-基于 Redis 的实现需避坑 - Jedis 篇
如果认为Jedis实现分布式锁很简单,也就设置 Key 、删除Key,那系统迟早遇问题,面试必减分儿。坑虽然很多,但也有办法,除了锁本身的知识还有客户端的配置调优建议,有空记得来看
分布式锁中-基于 Redis 的实现如何防重入
传统的分布式锁若归类为重用锁(A 持锁后,B 来抢锁只要没超时就一直重试抢锁,抢到就用),而这种防重入场景下的锁可理解为”一次性“锁(A 持锁后,B 来抢锁只要锁已存在,则立即放弃)。
分布式锁中-基于Zookeeper的实现是怎样
ZK中创建和删除节点只能通过Leader执行,性能并不高;基于其高可用的特性,在并发量不是太高的场景,也可以使用ZK做分布式锁。